├── Source ├── VideoEditorSDK.m └── VideoEditorSDK.h ├── Package.swift ├── README.md ├── LICENSE.md └── CHANGELOG.md /Source/VideoEditorSDK.m: -------------------------------------------------------------------------------- 1 | // This file is part of an img.ly Software Development Kit. 2 | // Copyright (C) 2016-2021 img.ly GmbH 3 | // All rights reserved. 4 | // Redistribution and use in source and binary forms, without 5 | // modification, are permitted provided that the following license agreement 6 | // is approved and a legal/financial contract was signed by the user. 7 | // The license agreement can be found under the following link: 8 | // https://www.photoeditorsdk.com/LICENSE.txt 9 | -------------------------------------------------------------------------------- /Source/VideoEditorSDK.h: -------------------------------------------------------------------------------- 1 | // This file is part of an img.ly Software Development Kit. 2 | // Copyright (C) 2016-2021 img.ly GmbH 3 | // All rights reserved. 4 | // Redistribution and use in source and binary forms, without 5 | // modification, are permitted provided that the following license agreement 6 | // is approved and a legal/financial contract was signed by the user. 7 | // The license agreement can be found under the following link: 8 | // https://www.photoeditorsdk.com/LICENSE.txt 9 | 10 | @import ImglyKit; 11 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.6 2 | import PackageDescription 3 | 4 | let package = Package( 5 | name: "VideoEditorSDK", 6 | platforms: [.iOS(.v13)], 7 | products: [ 8 | .library(name: "VideoEditorSDK", targets: ["VideoEditorSDK"]), 9 | ], 10 | dependencies: [ 11 | .package(url: "https://github.com/imgly/imglykit-sp.git", exact: "11.10.2") 12 | ], 13 | targets: [ 14 | .target( 15 | name: "VideoEditorSDK", 16 | dependencies: [.product(name: "ImglyKit", package: "imglykit-sp")], 17 | path: "Source", 18 | publicHeadersPath: "" 19 | ) 20 | ] 21 | ) 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | VideoEditor SDK Logo 4 | 5 |

6 |

7 | 8 | Swift Package Manager Compatible 9 | 10 | 11 | Swift Package Manager Compatible 12 | 13 | 14 | CocoaPods Compatible 15 | 16 | 17 | Twitter 18 | 19 |

20 | 21 | # Seamlessly integrate video creation into your iOS applications 22 | 23 | [VideoEditor SDK](https://videoeditorsdk.com/?utm_campaign=Projects&utm_source=Github&utm_medium=VESDK&utm_content=iOS&utm_term=Build) expands the powerful tools and features of the PhotoEditor SDK into the realm of mobile video creation. 24 | 25 | With an intuitive UI, an extensive filter gallery, advanced adjustment tools and crops for social aspect ratios you’ll empower your users to create engaging and professional looking videos in a breeze. 26 | 27 |

28 | VideoEditor SDK Sign up for Beta 29 |

30 |

31 | 32 | 33 | ## Features 34 | 35 | ### Adjustments 36 | 37 |

38 | VideoEditor SDK Adjustments 39 |

40 |

41 | 42 | The Adjustment section holds a variety of handy tools for your users to tweak and fine tune their footage ranging from basic operations like brightness and contrast to more sophisticated options like gamma. 43 | 44 | ### Trimming 45 | 46 |

47 | VideoEditor SDK Trimming 48 |

49 |

50 | 51 | The trimming tool helps your users to keep their content relevant and get rid of unnecessary or boring parts. With a simple drag of the playhead your users can limit their footage to the most interesting parts only. 52 | 53 | ### Filters 54 | 55 |

56 | VideoEditor SDK Filters 57 |

58 |

59 | 60 | The VideoEditor SDK ships with over 60 filters for every mood and atmosphere. Let your users achieve a cinematic look for their videos with a single tap. 61 | 62 | ### Transform 63 | 64 | Let your users present their content in the most fitting format. The Transform section unifies cropping, flipping and rotating operations. The SDK ships with various preset crop and aspect ratios like 1:1, 16:9, and common social media formats. 65 | 66 | ### Furnish 67 | 68 | The VideoEditor SDK offers various handy tools to spice up and furnish video content for maximum effect. With Stickers, Frames, Overlays and a Brush tool your users can easily turn any video into a successful social media post. 69 | 70 | ### Communicate 71 | 72 | A compelling message adds the final touch to any video. The VideoEditor SDK provides all necessary functions for quickly adding and editing text. Furthermore: The Text Design tool automatically merges input text with typography layouts to create stunning designs. 73 | 74 | ## License Terms 75 | Make sure you have a commercial license before releasing your app. A commercial license is required for any app or service that has any form of monetization: This includes free apps with in-app purchases or ad supported applications. Please contact us if you want to purchase the commercial license. 76 | 77 | ## Support and License 78 | Use our [service desk](https://support.videoeditorsdk.com) for bug reports or support requests. To request a commercial license, please use the [license request](https://account.photoeditorsdk.com/pricing?product=vesdk&?utm_campaign=Projects&utm_source=Github&utm_medium=VESDK&utm_content=iOS&utm_term=Build) form on our website. 79 | 80 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # PhotoEditor SDK / VideoEditor SDK 2 | 3 | ## Terms of Service 4 | 5 | Version 2024.01 6 | 7 | ### **1. Subject Matter** 8 | 9 | **1.1** These Terms of Service (together with any applicable Order Form the "**Agreement**") govern all rights granted by Licensor to use and commercially exploit any of the IMG.LY SDKs (the "**Software**"), namely the CreativeEditor SDK and/or PhotoEditor SDK and/or VideoEditor SDK and/or imglyKit SDK. 10 | 11 | **1.2** The Agreement is entered into by and between IMG.LY GmbH, Kortumstraße 19-21, 44787 Bochum, Germany (the "**Licensor**") and the entity identified in the Order Form (the "**Licensee**", together with Licensor the "**Parties**") as of the effective date the Order Form is last signed on. 12 | 13 | **1.3** This Agreement shall govern the use of the Software for commercial purposes. To the extent the Software is intended to be used for non-commercial purposes only, an alternative licensing scheme may be available upon Licensor's discretion. 14 | 15 | ### **2. Order Form** 16 | 17 | **2.1** An "**Order Form**" may either be executed (i) by the Parties upon individual negotiation or (ii) via an online order issued by Licensee via Licensor's website at [img.ly](https://img.ly) (the "**Website**") that has been confirmed by Licensor. Online orders not confirmed within 14 days after issuance shall be considered denied. 18 | 19 | **2.2** No rights shall be granted to Licensee by virtue of these Terms of Service alone as such grant requires the execution of an Order Form making reference to these Terms of Service. 20 | 21 | **2.3** The Order Form shall specify the environment for the Software that shall be licensed by Licensee. The Software is currently available for integration in the following environments, but is not limited to: (i) Web, (ii) iOS, (iii) Android, and (iv) Node.js. 22 | 23 | **2.4** The Order Form shall specify (i) the Subscription Term and (ii) the License Fees. Unless specified otherwise in the Order Form, the Subscription Term shall be based on monthly or annual periods for payment of the License Fees (the "**Payment Periods**"). 24 | 25 | **2.5** Licensor may choose to offer Licensee a trial period specified by Licensor to test the Software in a dedicated testing environment not subject to License Fees (the "**Trial Period**")**.**Licensor may also choose to offer Licensee extended trial periods subject to License Fees (“Extended Trial Period”). These Trial Periods and/or Extended Trial Periods will automatically end upon completion and do not require termination. Licensee acknowledges that converting from a Trial Period and/or Extended Trial Period to a regular Subscription Term may require additional steps, as outlined in the Order Form. Upon expiration of the Trial Period and/or Extended Trial Period, the right to test the Software shall cease without further notice. Licensee shall then be required to execute an Order Form to obtain a License for a Subscription Term in case the Software shall be further used. 26 | 27 | **2.6** The Order Form can include usage-based pricing models based on factors such as monthly active users or number of exports. The pricing can also be based on Licensee’s company size. Licensee shall not make any false statements in regard to the eligibility thresholds stated on the Order Form or relevant for pricing. Further Licensee is solely responsible to keep Licensor informed about any changes on its part with respect to the eligibility thresholds or aspects relevant for pricing stated on the Order Form. 28 | 29 | **2.7**Licensee shall inform Licensor of any "agency relationship”, if necessary under a Non-Disclosure Agreement, under which Licensee effectively shall not be the entity making use of the Software but intends to source the Software for use by a third party. In such case, Licensor shall be free to execute an Agreement with the entity effectively making use of the Software as Licensee only. 30 | 31 | ### **3. Grant of Rights** 32 | 33 | **3.1** Licensor shall grant to Licensee a worldwide, non-exclusive, non-transferable, non-sublicensable right to use the Software subject to the terms of this Agreement, in particular with the specifications as set out in the Order Form (the "**License**"). 34 | 35 | **3.2** The License shall pertain to the Software in object code format as well as to content data (fonts, stickers, stock images, etc.) included therein. In case the disclosure of the Software in source code format is agreed upon in the Order Form, the License shall also pertain to the Software in source code format. 36 | 37 | **3.3** The License shall be limited to the right (i) to copy and – in case of disclosure in source code format – modify the Software for integration into one of Licensee's products (website or app) (the "**Licensee’s Product**") in accordance with the requirements of interfaces and implementation guidelines as issued by Licensor (the "**Integrated Software**") and (ii) to copy, distribute and make available the Integrated Software to Licensee's end customers. 38 | 39 | ### **4. Obligations and Restrictions** 40 | 41 | **4.1** Licensee shall not reproduce, disassemble, or reverse assemble any portion of the Software or otherwise derive its source code, except to the extent that such activity is specifically permitted by this Agreement or by statutory law. 42 | 43 | **4.2** Licensee shall not redistribute the Software or its modifications other than by integrating the Software into Licensee's Product. Use in context of more than one of Licensee's Products shall require multiple Licenses accordingly via respective Order Forms. Licensee's Product shall have a substantially different functionality than the Software (i.e. must not be described as a photo editor and/or video editor, respective development kit, library, or product commercially competing with the Software); otherwise, Licensor shall be entitled to terminate the Agreement and revoke the License at any time. 44 | 45 | **4.3** Licensee shall not use the Software in connection with or to promote any products, services, or materials that constitute or promote spyware, adware, or other malicious programs or code, unsolicited mass distribution of email (spam), defamatory, pornographic, abusive or otherwise offensive content; otherwise, Licensor shall be entitled to terminate the Agreement and revoke the License at any time. 46 | 47 | **4.4** Licensor shall be entitled to verify and validate Licensee's use of the Software in line with this Agreement via respective functionalities of the Software. In particular, Licensor is entitled to make access to the Software dependent from successful remote validation (via API) of a license key allocated to an active Subscription Term and covering the intended access and use. 48 | 49 | **4.5** Licensor shall be entitled to use server-side monitoring tools to analyze use of the Software by users. Licensee shall safeguard that such monitoring by Licensor can be performed in accordance with applicable privacy and data protection law via respective notices and, if required, opt-in procedures. Licensor will support Licensee to the extent required by providing required information and instruction. 50 | 51 | ### **5. Proprietary Rights** 52 | 53 | **5.1** All rights not expressly granted to Licensee are reserved by Licensor. Licensee shall have no rights to use, copy, or reproduce the Software except as expressly set forth in this Agreement. 54 | 55 | **5.2** No rights shall be granted with regard to trademarks, trade names, trade dress and trade secrets to Licensee except for the limited right of use provided under the License. 56 | 57 | ### **6. Third Party Components** 58 | 59 | **6.1** The Software implements components licensed under open source licenses ("**OSS Components**") and further software components and content data (fonts, stickers, stock images, etc.) provided by third parties under applicable licensing terms ("**Third Party Components**"). The use of the OSS Components and the Third Party Components is subject to the applicable separate licensing terms. A list of the OSS Components and Third Party Components with reference to the applicable licensing terms is accessible online via [**https://img.ly/acknowledgements**](https://img.ly/acknowledgements). Licensor does not act as sublicensor or agent in this regard and assumes or acknowledges no warranty or liability for the OSS Components and the Third Party Components. 60 | 61 | **6.2** Licensee shall only use further third party software components or content data (fonts, stickers, stock images, etc.) with the Software to the extent that Licensee is entitled to such use. Licensor shall not be liable or responsible for any use of third party software components or content data by Licensee. Licensee shall indemnify and hold harmless Licensor from any third-party claims caused by Licensee's actions involving third party software components or content data. 62 | 63 | ### **7. Payment** 64 | 65 | **7.1** The license fees as specified in the Order Form (the "**License Fees**") shall be due and payable in line with the Payment Periods. To the extent the due date is not specified in the Order Form, the License Fees shall be due upon the execution of the Order Form and then upon the commencement of each further Payment Period for all of the Subscription Term. 66 | 67 | **7.2** Licensor shall invoice the License Fees to Licensee. Invoices are payable without deduction within 14 days of the date of the invoice and may be made by direct payment on the Website via credit card, if a respective option is provided by Licensor. If Licensee is in default of payment, the outstanding amount shall bear interest as applicable under statutory law. Licensor reserves all further rights resulting from default. 68 | 69 | **7.3** Unless specified otherwise in the Order Form, the License Fees shall be paid in Euros. All amounts stated in the Order Form are excluding any applicable value added tax (VAT), unless explicitly specified otherwise. Licensee shall be responsible for any applicable sales, use, value added or similar taxes payable with respect to the licensing of the Software, or arising out of or in connection with this Agreement, other than taxes levied or imposed based upon Licensor's income or gross revenues. If Licensee has tax-exempt status, Licensee shall provide written evidence of such status to Licensor. Upon Licensor's request, Licensee shall provide its VAT identification number or other identification information required for invoicing purposes. 70 | 71 | **7.4** The license fees specified in the Order Form (the "License Fees") are subject to price adjustments in accordance with changes in the Consumer Price Index ("CPI") published by the European Central Bank ([https://www.ecb.europa.eu/](https://www.ecb.europa.eu/)). Corresponding License Fee adjustments are made at renewal for annual Subscription Terms and after every 12 months for other Subscription Terms. 72 | 73 | ### **8. Delivery and Maintenance** 74 | 75 | **8.1** The Software shall be delivered via download from designated package repositories. The designated link for such download shall be provided in the Order Form. The use of the Software in a Subscription Term requires a key that shall be provided upon the initial payment of the License Fees, subject to the terms agreed upon in the Order Form. The key required for a Trial Period shall be provided upon commencement and deactivated upon expiration of the Trial Period. 76 | 77 | **8.2** The Software and Documentation shall be provided in English language. 78 | 79 | **8.3** Licensee shall be responsible for installing the Software and providing the system environment required to operate the Software in accordance with the requirements as set forth in the Documentation. 80 | 81 | **8.4** Subject to any other specification in the Order Form, Licensor shall not provide any support and maintenance services other than the issuance of such updates, upgrades or patches as made available via the Website. 82 | 83 | **8.5** Licensor may choose to offer Licensee a separate Service Level Agreement detailing specific availability commitments against additional remuneration. Such availability commitments always exclude downtime due to planned maintenance and downtime outside Licensor’s control. In case of planned maintenance leading to downtime exceeding three hours, Licensor will notify Licensee via email. 84 | 85 | ### **9. Term and Termination** 86 | 87 | **9.1** The term of the License shall be determined in the Order Form (the "**Subscription Term**"). The License shall commence upon initial payment of the License Fees and expire upon the end of the Subscription Term(s). Unless stated otherwise in the Order Form, the initial Subscription Term shall automatically be extended by further consecutive Subscription Terms unless either party notifies the other in writing of its intent not to extend the License prior to the end of the current Subscription Term. For monthly Subscription Terms, the notification must be given one week prior to the end of the then-current Subscription Term in order to be valid. For other Subscription Terms, the notification must be given one month prior to the end of the then-current Subscription Term in order to be valid. Upon expiration of the Subscription Term(s), the right to use the Software shall cease without further notice. To the extent the Subscription Term is not specified in the Order Form, Licensor shall be entitled to terminate the Agreement and revoke the License at any time. 88 | 89 | **9.2** Either Party shall be entitled to immediately terminate this Agreement or suspend any rights granted hereunder upon notice to the other in the event that: (i) the other Party breaches any material term of this Agreement, Licensor may particularly revoke the License in case of default or other non-payment of License Fees; or (ii) upon the other Party's dissolution, liquidation, or the appointment of a receiver, trustee, custodian, or similar agent for the Party's business or property. A change of control of Licensee, the sale of all or more than 50% of Licensee's assets, or a merger or reorganization of Licensee in which Licensee is not the surviving organization is considered dissolution of Licensee. In the event that Licensor terminates this Agreement for breach, all amounts due or to become due under this Agreement shall immediately become due and payable. 90 | 91 | **9.3** Upon expiration of the Subscription Term or termination, each Party shall promptly remit to the other all unpaid monies due, or to become due, under this Agreement. Licensee shall return to Licensor or destroy all copies of the Software in its possession and provide written confirmation to that effect; this particularly applies to the Software in source code format in case such disclosure has occurred. In case of termination or revocation of the License, paid monies or due payments for any commenced Payment Periods shall not be refunded to Licensee. 92 | 93 | **9.4** In addition to those provisions which by their nature are intended to survive any termination or expiration of this Agreement or any license granted hereunder, Sections 11, 12 and 13 of this Agreement shall specifically survive such expiration or termination. 94 | 95 | **9.5** In the event of termination or expiration of the Subscription Term, the Licensee is obliged to promptly cease use of and remove the Software from all of its products. Until the Software is confirmed to be completely removed from all of the Licensee's products, Licensor reserves the right to continue to charge the Licensee the agreed License Fees. The Licensee must provide satisfactory evidence of the complete removal of the Software upon request of the Licensor. 96 | 97 | ### **10. Warranty Claims** 98 | 99 | **10.1** Product descriptions shall not be deemed guaranteed unless separately agreed in writing. 100 | 101 | **10.2** Rights in case of defects shall be excluded in case of minor or immaterial deviations from the characteristics of the Software or in the case of only slight impairment of use. Licensor shall further not be responsible for defects which are caused by improper use or operation. 102 | 103 | **10.3** Any claims for damages are subject to the limitations set forth under Section 11 of this Agreement. 104 | 105 | ### **11. Limitation of Liability** 106 | 107 | **11.1** Licensor shall be liable without restriction for damages caused intentionally or with gross negligence by Licensor, its legal representatives or assistants in performance. Licensor shall also be liable without restriction for death, personal injury or damage to health caused by Licensor, its legal representatives or assistants in performance. Furthermore, Licensor shall be liable without restriction for damages in accordance with the German Product Liability Act. 108 | 109 | **11.2** Licensor shall be liable for damages caused by breach of its primary obligations under this Agreement by Licensor, its legal representatives or assistants in performance. Primary obligations are such duties that form the essence of the Agreement, which were decisive for the conclusion of the Agreement and on the performance of which Licensee may rely. If Licensor breaches its primary obligations with simple negligence, then its liability shall be limited to the amount which was foreseeable for Licensor at the time when the respective duty was performed. Any further liability of Licensor shall be excluded on the merits. In particular, any liability of Licensor for initial defects of the Software already present at the start of the Subscription Term shall be excluded. 110 | 111 | **11.3** The right to set off a claim shall be limited to such claims that are uncontested or have been finally established with legal effect. 112 | 113 | ### **12. Confidentiality** 114 | 115 | **12.1** Each Party may be granted access to confidential information of the other Party during the term of this Agreement. Confidential information does not include information that: (i) is or becomes publicly available through no act or omission of the other party, (ii) is rightfully acquired by the recipient from a third party that was not under an obligation to hold the information in confidence, (iii) is independently developed by the recipient or, (iv) is previously known to the recipient without non-disclosure obligations. The terms of this Agreement and the source code to the Software shall constitute confidential information under this Agreement. 116 | 117 | **12.2** Neither Party shall use any confidential information of the other Party other than for the purpose of exercising its rights or performing its obligations under this Agreement or disclose to any third party any confidential information of the other Party except as permitted under this Agreement. Disclosure of confidential information shall not be precluded if such disclosure is in response to a valid order of a court or other governmental body or is otherwise required by statutory law. 118 | 119 | **12.3** Subject to the exceptions under Section 12.2., Licensee shall not disclose the terms of this Agreement to any third party. 120 | 121 | **12.4** Non-disclosure agreements executed by the Parties independent from this Agreement shall remain in force. 122 | 123 | ### **13. Final Provisions** 124 | 125 | **13.1** Licensor shall be entitled to identify Licensee as a customer and to refer to Licensee and its business by name, trademark and trade name, if applicable, on the Website and in Licensor's marketing materials. 126 | 127 | **13.2** Licensor shall not accept, and this Agreement does not operate as an acceptance of, any different or additional terms and conditions, and this Agreement shall prevail over any such different or additional provisions, of any Licensee's order. 128 | 129 | **13.3** All notices or reports shall be in writing or sent by email. 130 | 131 | **13.4** Licensee may not assign this Agreement, in whole or in part to any third party without the prior written consent of Licensor. 132 | 133 | **13.5** Amendments or additions to this Agreement must be made in writing to be effective. This shall also apply to amendments of this written form requirement. 134 | 135 | **13.6** This Agreement shall be governed by the laws of the Federal Republic of Germany; the regulations of the UN Sales Convention shall be excluded. 136 | 137 | **13.7** The courts for Licensor's registered office shall have exclusive jurisdiction over all disputes under and in connection with this Agreement. 138 | 139 | **13.8** Should any provision of this Agreement be or become invalid, this shall not affect the validity of the remaining terms. In such event, the Parties shall be obliged to cooperate in the creation of terms which achieve such legally valid result as comes closest commercially to that of the invalid provision. The above shall apply accordingly to the closing of any gaps in the Agreement. 140 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## [11.10.2] 2 | 3 | ### Fixed 4 | 5 | * Fixed Xcode 16 submissions failed due to bitcode contained in the frameworks. (#1902) 6 | 7 | ## [11.10.1] 8 | 9 | ### Fixed 10 | 11 | * Fixed issue where the video could not be exported in case the `trimModel.endTime` of a loaded serialization is longer than the video's duration. (#1873) 12 | 13 | ## [11.10.0] 14 | 15 | ### Added 16 | 17 | * Added `PrivacyInfo.xcprivacy` containing information on the data collected by the SDKs. (#1868) 18 | 19 | ## [11.9.0] 20 | 21 | ### Added 22 | 23 | * [ImglyKit] Added `StickerSelectionController.batchSize` to adjust the batch size for loading and prefetching stickers. (#1789) 24 | * [VideoEditorSDK] Added `AudioClipSelectionController.batchSize` to adjust the batch size for loading and prefetching audio clips. (#1838) 25 | 26 | ### Fixed 27 | 28 | * [ImglyKit] Fixed issue where stickers would not be loaded for the GIPHY sticker category on iPad. (#1789) 29 | * [ImglyKit] Fixed potential compiling issue with React Native. (#1854) 30 | 31 | ## [11.8.1] 32 | 33 | ### Fixed 34 | 35 | * [VideoEditorSDK] Fixed HDR videos having overly exposed brightness. (#1830) 36 | 37 | ## [11.8.0] 38 | 39 | ### Added 40 | 41 | * Added support for Expo 49. (#1811) 42 | 43 | ## [11.7.0] 44 | 45 | ### Changed 46 | 47 | * Built with Swift 5.8 / Xcode 14.3.1 48 | * [ImglyKit] Replaced font 'Galano' with font 'Lexend Bold', 'Campton' with 'Outfit Bold', 'Wolesbro' with 'Cookie', and 'Amberlight' with 'Allison'. (#1790) 49 | 50 | ### Fixed 51 | 52 | * [ImglyKit] Implemented thread-safety in `AssetManager` to increase robustness against concurrent access in environments with multi-threaded contexts. (#1807) 53 | 54 | ## [11.6.0] 55 | 56 | ### Added 57 | 58 | * [ImglyKit] Added `StickerCollectionDelegate.stickerCollection(_ stickerCollection:, didSelect:, metadata:)`, so `StickerCollectionDelegate` now supports passing metadata to sticker placed by from a custom `StickerCollection`. (#1708) 59 | * [ImglyKit] Added `AdjustToolControllerOptions.limitConfigurationClosure` that allows configuration of adjustment tool slider minimum and maximum values. (#1739) 60 | * [ImglyKit] Added `PhotoEditViewControllerOptions.outputScaling` and `VideoEditViewControllerOptions.outputScaling` options, that ensure that output dimensions exactly match the selected aspect ratio. (#1359) 61 | * [VideoEditorSDK] Added `VideoEditViewControllerOptions.showTimelineOnMainScreen` flag, that enables video timeline view on the main screen of the editor. (#1719) 62 | * [VideoEditorSDK] Added `VideoClipToolControllerOptions.videoClipAddButtonSelectedClosure` that is invoked when new video is added to the composition. (#1720) 63 | * [VideoEditorSDK] Added duration option for text designs. (#1695) 64 | * [VideoEditorSDK] Added `.composition` and `.audio` screens to analytics. (#1781) 65 | 66 | ### Changed 67 | 68 | * [ImglyKit] Changed behavior of the text design tool to have a dedicated color and layout option. The old behavior can be restored by using the `ToolMenuItem.createLegacyTextDesignToolItem()` item. (#1695) 69 | 70 | ### Fixed 71 | 72 | * [ImglyKit] Fixed access level of `OverlayEditController.init(sliderEditController:)` to `public` so that `OverlayEditController` can be subclassed. (#1757) 73 | * [ImglyKit] Fixed showing filters when using `CameraViewControllerOptions.showFilters`. (#1781) 74 | * [VideoEditorSDK] Fixed `VideoEditorResult.hasChanges` would be `false` for muted videos. (#1735) 75 | 76 | ## [11.5.1] 77 | 78 | ### Added 79 | 80 | * [ImglyKit] Added `Theme.uppercasedToolbarTitles` that controls capitalization of titles in the editor's toolbar. 81 | * [ImglyKit] Added support to exchange the `UIFont` used in the SDK via the `Theme`. To use this feature, assign custom fonts to `Theme.primaryFont`, `Theme.mediumFont`, `Theme.boldFont`, `Theme.monospacedFont` and `Theme.searchBarFont`. 82 | 83 | ### Fixed 84 | 85 | * [ImglyKit] Fixed serialization created from videos, sometimes not working on photos. (#1658) 86 | * [ImglyKit] Fixed camera continuously reporting runtime error when on call. (#1693) 87 | * [ImglyKit] Fixed brush being rendered at the incorrect spot when using rotation on transform tool. (#1668) 88 | * [ImglyKit] Fixed missing Obj-C compatibility for `StickerProvider`. (#1665) 89 | * [PhotoEditorSDK] Fixed exported images being upside down when taken in mirrored mode from native camera. (#1659) 90 | * [VideoEditorSDK] Fixed audio clips from the asset catalog not playing. (#1697) 91 | 92 | ## [11.5.0] 93 | 94 | ### Fixed 95 | 96 | * [ImglyKit] Fixed brush serialization made on Android rendered inverted. (#1657) 97 | * [VideoEditorSDK] Fixed audio serialization inconsistencies between Android and iOS. (#1661) 98 | 99 | ### Added 100 | 101 | * [VideoEditorSDK] Added support for custom audio selection views. (#1661) 102 | * [VideoEditorSDK] Added option to search and load audio clips from external providers. (#1661) 103 | * [VideoEditorSDK] Added a Soundstripe audio provider and predefined audio clip category. Add the `SoundstripeAudioClipCategory` to your audio categories to search for and use Soundstripe audio clips directly from the audio tool. (#1661) 104 | 105 | ## [11.4.0] 106 | 107 | ### Fixed 108 | 109 | * [ImglyKit] Fixed frames tool using abnormal amount of memory with bigger images. (#1655) 110 | * [VideoEditorSDK] Fixed audio slider not working on videos without sound. (#1654) 111 | 112 | ### Added 113 | 114 | * [ImglyKit] Added `SmartSticker` API that allows custom sticker implementation. (#1641) 115 | 116 | ## [11.3.4] 117 | 118 | ### Fixed 119 | 120 | * [ImglyKit] Fixed sticker add button icon being replaced on SwiftUI. (#1587) 121 | * [ImglyKit] Fixed action buttons not showing when embedded into navigation controller. (#1614) 122 | * [VideoEditorSDK] Fixed stickers and text not showing in transform tool when using `Duration` action. (#1619) 123 | 124 | ## [11.3.3] 125 | 126 | ### Added 127 | 128 | * [ImglyKit] Added `singleToolUse` mode that skips main menu if only one tool is used. (#1524) 129 | 130 | ### Fixed 131 | 132 | * [ImglyKit] Fixed loading serializations produced on Android, when no text background color was provided. (#1554) 133 | 134 | ## [11.3.2] 135 | 136 | ### Fixed 137 | 138 | * [ImglyKit] Fixed App Store Connect private symbol warnings. (#1545) 139 | 140 | ## [11.3.1] 141 | 142 | ### Fixed 143 | 144 | * [ImglyKit] Fixed overlay blend modes not working on iOS 16. (#1534) 145 | 146 | ## [11.3.0] 147 | 148 | ### Added 149 | 150 | * [ImglyKit] Added all `OverlayButton`s to participate in custom class replacements. (#1471) 151 | * [VideoEditorSDK] Added `VideoSegment` API to `Video` for importing and exporting the complete video composition state including the individual clip trimming parameters. (#1411) 152 | * [VideoEditorSDK] Added `PhotoEditModel.compositionModel` to modify the video composition state while the editor is running. (#1411) 153 | * [VideoEditorSDK] Added duration action for text and stickers. (#1409) 154 | 155 | ### Deprecated 156 | 157 | * [VideoEditorSDK] Deprecated `AVAsset` API for `Video` in favor of `VideoSegment` API. (#1411) 158 | 159 | ### Fixed 160 | 161 | * [ImglyKit] Fixed crash when deserializing multiple instances of the same personal/external sticker. (#1466) 162 | * [ImglyKit] Fixed not requesting `PHPhotoLibrary` access when the camera roll button is not shown. (#1470) 163 | 164 | ## [11.2.0] 165 | 166 | ### Added 167 | 168 | * Added experimental Mac Catalyst support. (#1311) 169 | * [ImglyKit] Added handling of low-memory warnings to `AssetManager`. (#1335) 170 | * [PhotoEditorSDK] Added the possibility to populate `AssetManager` for headless photo rendering. (#946) 171 | 172 | ### Fixed 173 | 174 | * [ImglyKit] Fixed smart sticker selection after scrolling. (#1372) 175 | * [ImglyKit] Fixed hiding personal sticker category for specific products in `StickerToolControllerOptionsBuilder.addedStickerClosure`. (#1363) 176 | * [ImglyKit] Fixed weather sticker deserialization when using a new asset catalog. (#946) 177 | * [ImglyKit] Fixed crash when using background removal with serialization. (#1315) 178 | * [ImglyKit] Fixed `FilterToolControllerOptionsBuilder.showFilterIntensitySlider` was not applied when opening the filter tool with an applied filter. (#1343) 179 | * [PhotoEditorSDK] Fixed UI showing wrong background removal button icon when using serialization. (#1315) 180 | 181 | ## [11.1.0] 182 | 183 | ### Added 184 | 185 | * [ImglyKit] Added background removal option for personal and external non-animated stickers that depict people. (#1194) 186 | * [PhotoEditorSDK] Added background removal option for photos that depict people. (#1194) 187 | 188 | ### Fixed 189 | 190 | * Fixed deprecation warnings for Swift tools version 5.6 when integrating the SDK via Swift Package Manager (SPM). (#1293) 191 | 192 | ## [11.0.0] 193 | 194 | Please see the [PE.SDK](https://img.ly/docs/pesdk/ios/introduction/migration/) or [VE.SDK](https://img.ly/docs/vesdk/ios/introduction/migration/) version 11 migration guide for details. 195 | 196 | ### Added 197 | 198 | * [ImglyKit] Added font selection icon text to localization. 199 | * [PhotoEditorSDK] Added `PhotoEditorTask`, `PhotoEditorResult` and `PhotoEditorError` types. 200 | * [PhotoEditorSDK] Added optional `photoEditViewControllerShouldStart` method in `PhotoEditViewControllerDelegate` and SwiftUI `onShouldStart` modifier. 201 | * [VideoEditorSDK] Added `VideoEditorTask`, `VideoEditorResult` and `VideoEditorError` types. 202 | * [VideoEditorSDK] Added optional `videoEditViewControllerShouldStart` method in `VideoEditViewControllerDelegate` and SwiftUI `onShouldStart` modifier. 203 | 204 | ### Deprecated 205 | 206 | * [ImglyKit] Deprecated `StickerCategory.all`, `Frame.all`, `Effect.all`, `Overlay.all`, `FontImporter.all`, `TextDesign.all`, `VideoClipCategory.all`, and `AudioClipCategory.all`. Add the assets directly to the `assetCatalog` of your `Configuration` object instead. 207 | * [PhotoEditorSDK] Deprecated `PhotoEditorResult.hasChanges` in favor of `.status`. 208 | * [VideoEditorSDK] Deprecated `VideoEditorResult.hasChanges` in favor of `.status`. 209 | 210 | ### Changed 211 | 212 | * Built with Swift 5.6 / Xcode 13.3.1 213 | * Increased the deployment target to iOS 13.0. 214 | * [ImglyKit] Updated the brush tool to use Metal instead of OpenGL. 215 | * [ImglyKit] Moved `.willBecomeActiveTool`, `.didBecomeActiveTool`, `.willResignActiveTool`, and `.didResignActiveTool` from a public `UIViewController` extension to `ViewController`. 216 | * [ImglyKit] Moved public extensions of UIKit, Foundation and other iOS SDK classes to `.imgly` namespace for Swift and changed the prefix to `imgly_` for Obj-C to avoid collisions. Deprecated old extensions. 217 | * [ImglyKit] Renamed `IMGLY.Error` to `IMGLYError`. 218 | * [ImglyKit] Unified SwiftUI and UIKit result types. 219 | * [ImglyKit] SwiftUI `onDidSave` and `onDidFail` modifiers use new result and error types. 220 | * [PhotoEditorSDK] `PhotoEditViewControllerDelegate` uses new result and error types: 221 | * `photoEditViewController(_ photoEditViewController: PhotoEditViewController, didSave image: UIImage, and data: Data)` is now `photoEditViewControllerDidFinish(_ photoEditViewController: PhotoEditViewController, result: PhotoEditorResult)` 222 | * `photoEditViewControllerDidFailToGeneratePhoto(_ photoEditViewController: PhotoEditViewController)` is now `photoEditViewControllerDidFail(_ photoEditViewController: PhotoEditViewController, error: PhotoEditorError)` 223 | * [VideoEditorSDK] `VideoEditViewControllerDelegate` uses new result and error types: 224 | * `videoEditViewController(_ videoEditViewController: VideoEditViewController, didFinishWithVideoAt url: URL?)` is now `videoEditViewControllerDidFinish(_ videoEditViewController: VideoEditViewController, result: VideoEditorResult)` 225 | * `videoEditViewControllerDidFailToGenerateVideo(_ videoEditViewController: VideoEditViewController)` is now `videoEditViewControllerDidFail(_ videoEditViewController: VideoEditViewController, error: VideoEditorError)` 226 | 227 | ### Fixed 228 | 229 | * [ImglyKit] Fixed a crash when opening the brush tool with the iOS Simulator on M1 Macs. 230 | 231 | ### Removed 232 | 233 | * Removed all previously deprecated methods. 234 | * Removed any usage of OpenGL. 235 | * [ImglyKit] Removed `CameraViewController.dataCompletionBlock` and moved related logic to `CameraViewController.completionBlock`. 236 | * [ImglyKit] Removed `UIImage` parameter from `CameraViewController.completionBlock`. 237 | * [PhotoEditorSDK] Removed the use of `UIImage` in `PhotoEditViewControllerDelegate`, please use `data` and `UIImage(data:)` instead. 238 | * [PhotoEditorSDK] Removed the possibility to save an unedited image without rendering if the source `data` is unavailable. 239 | * [VideoEditorSDK] Removed legacy trim controls. Now, the overlay trim controls will be always used which was the default before. Deprecated `TrimToolOptions.useOverlayControls`, and `.controlsContainerView`, `.currentTimeLabel`, `.durationLabel`, `.playPauseButton` of the `TrimToolController`. 240 | 241 | ## [10.30.1] 242 | 243 | ### Fixed 244 | 245 | * [ImglyKit] Fixed potential issues with App Store submission when integrating the SDK via CocoaPods. 246 | 247 | ## [10.30.0] 248 | 249 | ### Added 250 | 251 | * [ImglyKit] Added support for custom sticker selection views. 252 | * [ImglyKit] Added option to search and load stickers from external providers. 253 | * [VideoEditorSDK] Added serialization support for personal animated GIF stickers. 254 | * [VideoEditorSDK] Added a GIPHY sticker provider and predefined sticker category. Add the `GiphyStickerCategory` to your sticker categories to search for and use animated GIPHY stickers directly from the sticker tool. 255 | 256 | ### Changed 257 | 258 | * [VideoEditorSDK] Improved support for viewing animated GIF stickers inside sticker categories. 259 | 260 | ### Fixed 261 | 262 | * [ImglyKit] Fixed `CameraViewController` to use the asset catalog (for live filters) defined by the `Configuration` instead of always using `AssetCatalog.shared.effects`. 263 | * [ImglyKit] Fixed `CameraViewController` photo library permissions request that could fail on iOS 15.2+. 264 | * [ImglyKit] Fixed overlay artifacts for wide color and/or transparent images. 265 | * [ImglyKit] Fixed stickers larger than 4096^2 producing a black image background. 266 | * [ImglyKit] Fixed (silent) force crop mode did not consider rotatable crop aspect ratios to determine the best matching aspect. 267 | * [ImglyKit] Fixed (silent) force crop behaviour on images with aspect ratio similar to one of the defined ones in `TransformToolControllerOptions.allowedCropAspects`. 268 | * [ImglyKit] Fixed `OverlayToolControllerOptionsBuilder.allowedBlendModes` and `StickerOptionsToolControllerBuilder.allowedStickerActions` would not be accessible from Objective-C. 269 | * [ImglyKit] Fixed `StickerToolController.menuViewController` would not scroll to previousily selected sticker category. 270 | * [ImglyKit] Fixed wide color values for sprites deserialized with P3 color space instead of extended sRGB. 271 | * [VideoEditorSDK] Fixed export progress percentage on trimmed videos. 272 | * [VideoEditorSDK] Fixed trim time calculation for videos with non-integer (drop-frame) frame rate. 273 | * [VideoEditorSDK] Fixed `TrimToolControllerOptionsBuilder.maximumDuration`, `TrimToolControllerOptionsBuilder.allowedTrimOverlayActions`, `AudioToolControllerOptionsBuilder.allowedAudioOverlayActions`, `CompositionToolControllerOptionsBuilder.allowedCompositionOverlayActions` would not be accessible from Objective-C. 274 | 275 | ## [10.29.0] 276 | 277 | ### Added 278 | 279 | * Added support for SwiftUI. You can now use `PhotoEditor`, `VideoEditor` and `Camera` directly in your SwiftUI applications. 280 | * [ImglyKit] Added option to configure a custom watermark image. 281 | * [ImglyKit] Added `setProgress` and `show` (with `cancelHandler`) methods to `ProgressView` protocol, which can be implemented to support progress reporting and cancelation of long-running processes. 282 | * [VideoEditorSDK] Added progress percentage and ability to cancel video exports. 283 | 284 | ### Fixed 285 | 286 | * [ImglyKit] Fixed icon image cache was not cleared when (re)assigning `IMGLY.bundleImageBlock` for icon customizations. 287 | * [VideoEditorSDK] Fixed audio and video playback state responding to audio interruptions such as phone calls, Siri, keyboard dictation. 288 | 289 | ## [10.28.2] 290 | 291 | ### Changed 292 | 293 | * [VideoEditorSDK] Optimized video compositions. 294 | 295 | ### Fixed 296 | 297 | * [ImglyKit] Fixed special characters being inserted with keyboard dictation while using text input with emoji opt-out. 298 | * [VideoEditorSDK] Fixed flipping sticker animation while editing a sticker's opacity. 299 | 300 | ## [10.28.1] 301 | 302 | ### Fixed 303 | 304 | * [ImglyKit] Fixed sprites not visible in transform and frame tool. 305 | * [ImglyKit] Fixed front/back camera switching UI layout. 306 | * [ImglyKit] Fixed Japanese/Chinese multistage text input with emoji opt-out. 307 | * [ImglyKit] Fixed `-0.0` that could be shown for angle adjustments with the `ScalePicker` in the transform tool. 308 | * [VideoEditorSDK] Fixed `Theme.tintColor` was not applied to `VideoTrimSelectionView` when entering the composition or (clip) trim tool with non-default trim start or end time. 309 | * [VideoEditorSDK] Fixed missing thumbnails for some videos while trimming to very short durations. 310 | * [VideoEditorSDK] Fixed scrubber tooltip that could display negative values for some videos. 311 | * [VideoEditorSDK] Fixed scrubber that could move outside the trim interval for some videos. 312 | * [VideoEditorSDK] Fixed real end trim time that could not have been selected for some videos. 313 | * [VideoEditorSDK] Fixed adding personal video clips in the composition tool that could fail to import some videos on iOS 14+. This disables the previously used `PHPickerViewController` in favor of `UIImagePickerController` even on iOS 14+ until a better solution is available. 314 | * [VideoEditorSDK] Fixed stickers would not be displayed correctly when replaced with animated stickers or when switching between sticker categories containing static as well as animated stickers on iOS 15. 315 | * [VideoEditorSDK] Fixed video preview stuck on first frame for some videos. 316 | 317 | ## [10.28.0] 318 | 319 | ### Added 320 | 321 | * [VideoEditorSDK] Added serialization support for audio composition. 322 | * [VideoEditorSDK] Added `minimumDuration` and `maximumDuration` to `TrimToolControllerOptions` in order to restrict the edited video to specific duration limits. 323 | * [VideoEditorSDK] Added `VideoEditViewControllerOptions.forceTrimMode`, `TrimToolControllerOptions.videoTooShortConfirmationClosure`, and `CompositionToolControllerOptions.compositionTooShortConfirmationClosure` in order to change the behavior when a video does not fit within the duration limits. 324 | 325 | ### Changed 326 | 327 | * [VideoEditorSDK] Improved the UX of the composition and (clip) trim tool timeline, e.g., the player is only temporarily paused while interacting with the timeline. 328 | * [VideoEditorSDK] Changed the composition and (clip) trim tool timeline to automatically zoom to the current trim selection. The old behavior can be restored by disabling `VideoTrimView.isZoomToSelectionEnabled`. 329 | * [VideoEditorSDK] Increased the default composition tool timeline height and thumbnail width to match the (clip) trim tool timeline appearance for improved accessibility. Set `VideoTrimView.thumbnailWidth` to `22` when it is contained in a `CompositionEditController` and `CompositionEditController.trimViewHeight` to `64` by subclassing `CompositionToolController` in order to preserve the old size. 330 | 331 | ### Fixed 332 | 333 | * [VideoEditorSDK] Fixed misaligned layout of trim view when the editor is embedded into a `UINavigationController`. 334 | * [VideoEditorSDK] Fixed slow tooltip updates when dragging start or end time trim handles on iOS 15. 335 | * [VideoEditorSDK] Fixed waveform in the audio tool was not shown for iOS 11 and earlier. 336 | 337 | ## [10.27.0] 338 | 339 | ### Added 340 | 341 | * [ImglyKit] Added `MediaEditViewControllerOptions.forceExport` which will force the photo/video to be rendered and exported in the defined output format even if no changes have been applied. Otherwise, the input asset will be passed through and might not match the defined output format. 342 | 343 | ### Deprecated 344 | 345 | * [ImglyKit] Deprecated `IMGLY.forceRenderHighResolutionImage`. Use `MediaEditViewControllerOptions.forceExport` instead. 346 | 347 | ### Fixed 348 | 349 | * [ImglyKit] Fixed `Theme.tintColor` was not applied to `AudioTrimSelectionView`. 350 | 351 | ## [10.26.1] 352 | 353 | ### Fixed 354 | 355 | * [ImglyKit] Fixed `-[PESDKAnimatedImageView displayLayer:]: unrecognized selector sent to instance` crash for iOS 13 and older. 356 | 357 | ## [10.26.0] 358 | 359 | ### Added 360 | 361 | * [ImglyKit] Added support for custom localization files. 362 | * [VideoEditorSDK] Added basic remote asset support for audio and video clip library. Assets are not cached! It's mainly intended for React Native debug builds which will generate temporary remote URLs for static assets. 363 | 364 | ### Fixed 365 | 366 | * [ImglyKit] Fixed jumping toolbar in the text tool. 367 | * [ImglyKit] Fixed `tintColor` of `MenuCollectionViewCell.iconImageView` ignored on iOS 15. 368 | * [ImglyKit] Fixed menu cells would sometimes disappear after transitioning between tools on iOS 15. 369 | * [ImglyKit] Fixed `PESDKGroup` could not be initialized in Objective-C. 370 | 371 | ## [10.25.0] 372 | 373 | ### Added 374 | 375 | * [ImglyKit] Added an opt-out for emoji support because it is not optimized for cross-platform use. It can be disabled with `TextToolControllerOptions.emojisEnabled` and `TextDesignToolControllerOptions.emojisEnabled`. 376 | 377 | ### Changed 378 | 379 | * Updated podspecs to use XCFramework releases instead of fat frameworks which requires CocoaPods version 1.10.0+. 380 | 381 | ## [10.24.0] 382 | 383 | ### Added 384 | 385 | * [VideoEditorSDK] Added video clip library for adding predefined video clips to video compositions. 386 | * [VideoEditorSDK] Added audio tool for adding overlay audio tracks to the edited video. 387 | 388 | ### Fixed 389 | 390 | * [ImglyKit] Fixed occasional weird scrolling behavior of the angle picker in the transform tool by disabling the invisible vertical and horizontal scroll indicators of the `ScalePicker`. 391 | * [PhotoEditorSDK] Fixed image adjustments could result in clipped sprites for images with transparent background on devices with Apple A9 SoCs. 392 | * [VideoEditorSDK] Fixed green artifacts in dark regions of video compositions on devices with Apple A9 SoCs. 393 | * [VideoEditorSDK] Fixed `Theme.tintColor` was not applied to `VideoTrimSelectionView`. 394 | * [VideoEditorSDK] Fixed loading issue for videos where the video track id was different from `1` which caused an empty preview and a crash when `TransformToolControllerOptions.allowFreeCrop` was disabled. 395 | * [VideoEditorSDK] Fixed an issue where assets such as stickers or text would not be placed correctly on videos. 396 | 397 | ## [10.23.1] 398 | 399 | ### Fixed 400 | 401 | * [ImglyKit] Fixed module interface compiler error. 402 | 403 | ## [10.23.0] 404 | 405 | ### Added 406 | 407 | * [VideoEditorSDK] Added composition tool for creating video compositions from multiple video clips. 408 | * [VideoEditorSDK] Added play/pause overlay button to the `VideoEditViewController`. 409 | * [VideoEditorSDK] Added sound on/off overlay button to the `VideoEditViewController` which mutes and unmutes the audio in the preview player and removes the audio track for exported videos if audio was muted in the preview. 410 | 411 | ### Changed 412 | 413 | * [VideoEditorSDK] Changed default trim tool UI to make use of overlay controls and tooltips for time labels. Set `TrimToolControllerOptions.useOverlayControls` to `false` in order to preserve the old UI. 414 | * [VideoEditorSDK] Changed default timeline thumbnail size in the trim tool from 2/3 to 9/16 as this better fits common portrait videos. Set `VideoTrimView.thumbnailWidth` to `40` in order to preserve the old size. 415 | 416 | ### Fixed 417 | 418 | * [VideoEditorSDK] Fixed video timeline thumbnails in the trim tool that were not clipped and thus overlapped each other for landscape videos. 419 | * [VideoEditorSDK] Fixed animated stickers are in some cases not paused in the preview when the video is paused. 420 | * [ImglyKit] Fixed analytics events for undo and redo operations in the adjustment tool. 421 | * [ImglyKit] Fixed `ToolbarButton` disabled control state style which used an alpha value of `0.2` but should have been `0.4`. 422 | 423 | ## [10.22.0] 424 | 425 | ### Changed 426 | 427 | * [ImglyKit] Changed default blend mode for `imgly_overlay_vintage` to `overlay` for cross-platform consistency. 428 | 429 | ### Added 430 | 431 | * [PhotoEditorSDK] Added factory methods `PhotoEditViewController.makePhotoEditViewController` and `[PESDKPhotoEditViewController photoEditViewControllerWith...]` that also create a replacement subclass if there is a replacing class defined by `PESDK.replaceClass`. 432 | * [VideoEditorSDK] Added factory methods `VideoEditViewController.makeVideoEditViewController` and `[PESDKVideoEditViewController photoEditViewControllerWith...]` that also create a replacement subclass if there is a replacing class defined by `VESDK.replaceClass`. 433 | 434 | ### Fixed 435 | 436 | * [ImglyKit] Fixed `OverlayButton`s being misaligned when using Right-To-Left languages. 437 | 438 | ## [10.21.6] 439 | 440 | ### Fixed 441 | 442 | * [VideoEditorSDK] Fixed a crash when transforming videos that are flipped vertically and horizontally. 443 | 444 | ## [10.21.5] 445 | 446 | ### Added 447 | 448 | * [ImglyKit] Added `StickerToolControllerOptions.personalStickerCustomizationClosure` to customize personal stickers. 449 | 450 | ### Fixed 451 | 452 | * [VideoEditorSDK] Fixed a bug where `VideoEditViewControllerDelegate.videoEditViewControllerDidFailToGenerateVideo` has not been called in case that the export background task has been ended by the operating system. 453 | * [VideoEditorSDK] Fixed crash for some videos with invalid audio. 454 | 455 | ## [10.21.4] 456 | 457 | ### Added 458 | 459 | * [ImglyKit] Added `TextToolControllerOptions.defaultTextAlignment` to specify the initial alignment of newly added text. 460 | 461 | ### Fixed 462 | 463 | * [ImglyKit] Fixed a bug where `startTime` and `endTime` of a `TrimModel` were not exposed to Objective-C. 464 | 465 | ## [10.21.3] 466 | 467 | ### Added 468 | 469 | * [VideoEditorSDK] Added `VideoEditViewController.play()` and `VideoEditViewController.pause()` which allow to control the video playback. 470 | 471 | ### Fixed 472 | 473 | * [ImglyKit] Fixed a crash when loading smart stickers using a basic license. 474 | 475 | ## [10.21.2] 476 | 477 | ### Fixed 478 | 479 | * [ImglyKit] Fixed issue where rotating a text design would lead to a crash. 480 | * [ImglyKit] Fixed menu in the transform tool not being aligned with the selected crop aspect when inverting the crop aspect or rotating the asset. 481 | 482 | ## [10.21.1] 483 | 484 | ### Changed 485 | 486 | * [ImglyKit] Replaced several fonts with new fonts and added additional new fonts. 487 | 488 | ## [10.21.0] 489 | 490 | ### Added 491 | 492 | * [ImglyKit] Added H264 video codec initializer with the option to specify a `VideoCodecProfileH264`. 493 | 494 | ## [10.20.0] 495 | 496 | ### Changed 497 | 498 | * Built with Swift 5.2.4 / Xcode 11.7 499 | * [ImglyKit] Changed `.bringToFront` overlay buttons are now disabled when the selected sprite is already on top. 500 | 501 | ### Added 502 | 503 | * [ImglyKit] Added `CameraViewControllerOptions.allowedRecordingOrientations` which allow to specify the orientations in which the camera should record. 504 | 505 | ### Fixed 506 | 507 | * [ImglyKit] Fixed issue where the camera roll button would not be visible in the `CameraViewController` when recording a video. 508 | 509 | ## [10.19.1] 510 | 511 | ### Fixed 512 | 513 | * [ImglyKit] Fixed issue where the renderer has not been updating the preview correctly when changing the `MediaEditPreviewController.photoEditModel` in a way that more than only the sprite models have been changed at the same time. 514 | * [ImglyKit] Improved timely weather data by requesting an update when the editor is about to appear for `WeatherProvider`'s that outlive editor invocations. 515 | 516 | ## [10.19.0] 517 | 518 | ### Changed 519 | 520 | * Enabled library evolution and module stability which allows to use the SDK from now on with any Xcode 11+ (beta) version. 521 | * [VideoEditorSDK] Selecting sprites won't pause video playback anymore to align behavior with Android. In order to restore the old behavior override `wantsVideoPlayback` of `BrushEditController`, `StickerEditController`, `TextDesignOptionsToolController`, `TextFontToolController`, and `TextOptionsToolController`. 522 | 523 | ### Added 524 | 525 | * Added experimental XCFramework and Swift Package Manager (SPM) support. 526 | 527 | ### Fixed 528 | 529 | * [ImglyKit] Fixed silent force crop behavior when `TransformToolControllerOptions.allowFreeCrop` and `MediaEditViewControllerOptions.forceCropMode` are both `false` where the asset would not be automatically cropped to the best matching aspect if its size would not fit one of the `TransformToolControllerOptions.allowedCropAspects`. 530 | * [ImglyKit] Fixed that the time label would be hidden when specifying `.video` as the first item in `CameraViewControllerOptions.allowedRecordingModes`. 531 | 532 | ## [10.18.0] 533 | 534 | ### Added 535 | 536 | * [ImglyKit] Added new `SmartSticker`s for weather to the first sticker category. These are hidden per default when `StickerToolControllerOptions.weatherProvider` is not set. You can use the `OpenWeatherProvider` or implement your own `WeatherProvider`. 537 | 538 | ### Fixed 539 | 540 | * [ImglyKit] Fixed unlocalized string for key `pesdk_smart_sticker_clock` warning. 541 | 542 | ## [10.17.0] 543 | 544 | ### Changed 545 | 546 | * [ImglyKit] Changed the displayed sticker category name from "Emoticons" to "Stickers". 547 | 548 | ### Added 549 | 550 | * [ImglyKit] Added `ToolbarButton.width` which allows to configure a custom width for the toolbar buttons. 551 | * [ImglyKit] Added new `MultiImageSticker` which allows to have multiple variations of a sticker that can be cycled by tapping the sticker on the canvas. 552 | * [ImglyKit] Added new `SmartSticker`s for weekday, date, time, and clock as first items to the first sticker category. 553 | 554 | ## [10.16.0] 555 | 556 | ### Added 557 | 558 | * [VideoEditorSDK] Added new GIF sticker category and stickers. 559 | 560 | ## [10.15.1] 561 | 562 | ### Changed 563 | 564 | * Built with Swift 5.2.4 / Xcode 11.6 565 | 566 | ### Fixed 567 | 568 | * [VideoEditorSDK] Fixed video playback was not paused when exporting an unedited video. 569 | 570 | ## [10.15.0] 571 | 572 | ### Changed 573 | 574 | * [ImglyKit] Changed access level of `CameraViewController`'s `UIImagePickerControllerDelegate` implementation to `open` in order to allow further customization within subclasses. 575 | * [VideoEditorSDK] The original URL of the input video is now returned by the `VideoEditViewControllerDelegate` instead of `nil` when exporting an unedited video in order to align the behavior with PhotoEditorSDK. 576 | 577 | ### Added 578 | 579 | * [ImglyKit] Added `TextToolControllerOptions.maximumTextSize` to configure the maximum initial font size for text added within the text tool. 580 | * [ImglyKit] Added missing analytics events for adding, selecting, and removing text designs. 581 | * [ImglyKit] Added `CameraController.cameraPosition` to determine the active camera position. 582 | 583 | ### Fixed 584 | 585 | * [ImglyKit] Fixed subclassing of `TextToolController`, `TextDesignToolController`, `BrushColorToolController`, `StickerGestureController`, `StickerColorToolController`, `StickerEditController`, `TextGestureController`, `TextColorToolController`, and `TextDesignGestureController` which caused undefined symbols for `_OBJC_METACLASS_` errors. 586 | * [ImglyKit] Fixed image picker in camera would allow selecting media types that are not included in the `CameraViewControllerOptions.allowedRecordingModes`. 587 | 588 | ## [10.14.0] 589 | 590 | ### Added 591 | 592 | * [VideoEditorSDK] Added support for animated GIF stickers. Sticker adjustments (brightness, contrast, saturation) and non-default tint modes are not supported for animated stickers. 593 | 594 | ### Fixed 595 | 596 | * [VideoEditorSDK] Fixed video playback to start at trimmed start position when loading a `PhotoEditModel` or serialization. 597 | * [VideoEditorSDK] Fixed crash for videos with invalid audio. 598 | 599 | ## [10.13.1] 600 | 601 | ### Fixed 602 | 603 | * [VideoEditorSDK] Fixed missing intermediate directories were not created for export filename. 604 | * [ImglyKit] Fixed static frames would not appear or lead to crash. 605 | * [ImglyKit] Fixed dynamic frames would lead to crash if not all patches have been set. 606 | * [ImglyKit] Fixed `error: Couldn't IRGen expression, no additional error` when using the `lldb` console. 607 | 608 | ## [10.13.0] 609 | 610 | ### Changed 611 | 612 | * Built with Swift 5.2.4 / Xcode 11.5 613 | 614 | ## [10.12.0] 615 | 616 | ### Changed 617 | 618 | * [ImglyKit] Changed access level of `AdjustEditController.updateSlider` to `open` in order to allow further customization within subclasses. 619 | 620 | ### Added 621 | 622 | * [ImglyKit] Added `MenuCollectionViewCell.cornerRadius` and `MenuCollectionViewCell.selectionBorderWidth` which allow customization via `UIAppearance` proxy calls. 623 | 624 | ### Fixed 625 | 626 | * [ImglyKit] Fixed force cropping could be undone. 627 | 628 | ## [10.11.0] 629 | 630 | ### Changed 631 | 632 | * [ImglyKit] Changed access level of `Slider.thumbView`, `Slider.leftUnfilledTrackView`, `Slider.rightUnfilledTrackView`, and `Slider.filledTrackView` to `open` in order to allow further customization within subclasses of `Slider`. 633 | 634 | ### Added 635 | 636 | * [ImglyKit] Added `UIAppearance` proxy support for `Slider.trackHeight`, `Slider.trackCornerRadius`, and `Slider.thumbSize`. 637 | 638 | ## [10.10.0] 639 | 640 | ### Changed 641 | 642 | * Built with Swift 5.2.2 / Xcode 11.4.1 643 | * [ImglyKit] Changed the initial minimum font size for text added with the text tool to `20.0`. In order to return to the old default value and line break behavior set `TextToolControllerOptions.minimumTextSize` to `1.0`. 644 | 645 | ### Added 646 | 647 | * [ImglyKit] Added `TextToolControllerOptions.minimumTextSize` to configure the initial minimum font size for text added with the text tool which affects the automatic line break behavior. 648 | 649 | ### Fixed 650 | 651 | * [ImglyKit] Fixed adding personal stickers would lead to the toolbar being hidden beneath the keyboard in the text and text design tool for iOS versions older than 13.0. 652 | * [ImglyKit] Added a workaround that fixes wrong layout of the navigation bar for iOS 13 devices without a notch when a `MediaEditViewController` is embedded into a `UINavigationController` and uses a different `prefersStatusBarHidden` setting as the parent view. 653 | 654 | ## [10.9.0] 655 | 656 | ### Changed 657 | 658 | * [ImglyKit] 🚨 `ConfigurationBuilder.configure(from:)` methods don't parse the tile configurations for `LUTFilter` objects from the `lutURI` filename anymore and the default changed from a 8x8 to a 5x5 tile configuration. 659 | * [ImglyKit] Added `@available(iOS 11.0, *)` restriction to `ImageFileFormat.heif` as this has always been noted in the API docs but was not enforced by the compiler. 660 | 661 | ### Added 662 | 663 | * [ImglyKit] Added `LUTEffect` initializer for specific tile configurations that does not parse its URL for tile configurations. 664 | * [ImglyKit] Added `Configuration.appearanceProxyConfigurationClosure` intended for custom `UIAppearance` proxy calls. 665 | * [ImglyKit] Enabled `SnapGuideView` properties for `UIAppearance` proxy calls. 666 | * [ImglyKit] Added snap guide colors to the `Theme`. 667 | 668 | ### Fixed 669 | 670 | * [ImglyKit] Added a workaround that fixes black image exports with the iOS 13.4 Simulator in general and all iOS 13.x Simulators running on macOS 10.15.4. Exports of images larger than 4096^2 are still failing to render on the aforementioned iOS Simulator configurations. On real devices everything works as expected. 671 | 672 | ## [10.8.0] 673 | 674 | ### Changed 675 | 676 | * Built with Swift 5.2 / Xcode 11.4. 677 | 678 | ### Fixed 679 | 680 | * [VideoEditorSDK] Fixed initial position of the video position seeker when the playback is paused and the trim tool is entered. 681 | * [ImglyKit] Fixed `StickerToolControllerOptions.titleViewConfigurationClosure` not being called for the selected sticker category. 682 | 683 | ## [10.7.4] 684 | 685 | ### Fixed 686 | 687 | * [ImglyKit] Added missing localizable strings for filter groups. 688 | * [ImglyKit] Fixed focus operation not being centered when the focus tool is applied to a cropped image. 689 | 690 | ## [10.7.3] 691 | 692 | ### Changed 693 | 694 | * [ImglyKit] Changed `UICollectionViewDelegate` methods implemented by `StickerSelectionController` to `open` instead of `public`. 695 | 696 | ### Fixed 697 | 698 | * [ImglyKit] Fixed infinite layout loop when rotating an inverted text design on iOS 13. 699 | * [ImglyKit] Fixed class replacement not working for `BlendModeCollectionViewCell` and `StickerCollectionViewCell`. 700 | * [ImglyKit] Fixed misplaced sticker bounding box when switching from opacity to color editing mode of a sticker. 701 | 702 | ## [10.7.2] 703 | 704 | ### Fixed 705 | 706 | * [ImglyKit] Increased the touch area of the color picker controls which were difficult to use at the borders of the color selection views. 707 | * [ImglyKit] Fixed default ordering of the frames for cross-platform consistency. 708 | * [ImglyKit] Fixed accidental drawing while using the color picker in the `BrushColorToolController`. 709 | 710 | ## [10.7.1] 711 | 712 | ### Changed 713 | 714 | * Built with Swift 5.1.3 / Xcode 11.3.1. 715 | 716 | ### Fixed 717 | 718 | * [ImglyKit] Fixed overwriting of configuration options when calling a `ConfigurationBuilder.configure*` closure more than once. Existing configuration options are now passed to successive invocations. 719 | * [ImglyKit] Fixed text tool and text design tool which would remain active even if the text was deleted. 720 | * [ImglyKit] Fixed switching the camera mode too fast would lead to the blur view appearing permanently and thereby disabling the camera functionality. 721 | * [VideoEditorSDK] Fixed an issue where the frame options tool would show the wrong video frame when playback is paused. 722 | 723 | ## [10.7.0] 724 | 725 | ### Changed 726 | 727 | * Built with Swift 5.1.3 / Xcode 11.3. 728 | 729 | ### Fixed 730 | 731 | * [ImglyKit] Added a public initializer for `PhotoEditRenderer` that's accessible with Objective-C. 732 | * [ImglyKit] Fixed Objective-C compatibility of `SpriteModel`. 733 | * [ImglyKit] Fixed `CGFloat?` properties not being exposed to Objective-C by converting them to `NSNumber?`. 734 | * [ImglyKit] Fixed rotational snapping of sprites which led to misaligned snapping angles and guides after the image has been rotated with the transform tool. 735 | * [ImglyKit] Fixed `FrameOptionsToolControllerOptions.allowedFrameActions` not being accessible from Objective-C. 736 | 737 | ## [10.6.0] 738 | 739 | ### Changed 740 | 741 | * [PhotoEditorSDK] Restricted access level of `PhotoEditViewController.options` to `public` in order to prevent overrides which would likely cause unexpected behavior. 742 | * [VideoEditorSDK] Restricted access level of `VideoEditViewController.options` to `public` in order to prevent overrides which would likely cause unexpected behavior. 743 | 744 | ### Fixed 745 | 746 | * [ImglyKit] Fixed animation of the media capturing buttons in the `CameraViewController` when switching the capturing mode from photo to video and vice versa. 747 | * [ImglyKit] Fixed slider in the sticker tool which was not updated when multiple stickers with different opacity, brightness, contrast, or saturation values were edited one after the other. 748 | * [ImglyKit] Fixed image preview for the iOS Simulator with Metal support (iOS 13 Simulator running on macOS 10.15) which led to the preview image being displayed upside down. 749 | * [ImglyKit] Fixed image preview in the transform and frame tool for the iOS Simulator with Metal support (iOS 13 Simulator running on macOS 10.15) which led to the display of an empty canvas. 750 | 751 | ## [10.5.0] 752 | 753 | ### Changed 754 | 755 | * Built with Swift 5.1.2 / Xcode 11.2.1. 756 | 757 | ### Added 758 | 759 | * [ImglyKit] Added configuration option `MediaEditViewControllerOptions.navigationControllerMode` to keep the `Toolbar` if the `MediaEditViewController` or one of its ancestors is a child of a `UINavigationController`. 760 | 761 | ### Deprecated 762 | 763 | * [ImglyKit] Deprecated `MediaEditViewControllerOptions.useParentNavigationItem` in favor of `MediaEditViewControllerOptions.navigationControllerMode`. 764 | 765 | ### Fixed 766 | 767 | * [ImglyKit] Fixed background color of the menu accessory view to use the `Theme.menuBackgroundColor`. This issue could result in a black gap at the bottom of the screen if the menu accessory view extended below the bottom `safeAreaLayoutGuide`, e.g., when the `MediaEditViewController` was embedded in a `UINavigationController`. 768 | 769 | ## [10.4.0] 770 | 771 | ### Changed 772 | 773 | * Built with Swift 5.1.2 / Xcode 11.2. 774 | 775 | ### Added 776 | 777 | * [ImglyKit] Added option to add personal stickers from the camera roll via `UIImagePickerController`. This feature is disabled by default and can be configured with `StickerToolControllerOptions`. If the same `AssetCatalog` is used for multiple editor instances and/or for de-/serialization added personal stickers will accumulate in this single `AssetCatalog` instance which is `AssetCatalog.shared` per default. In order to remove all added personal stickers use `AssetCatalog.removeTemporaryItems()` or create a new `AssetCatalog` for every editing session. 778 | 779 | ### Fixed 780 | 781 | * [ImglyKit] Fixed orientation of assets with EXIF metadata. 782 | 783 | ## [10.3.0] 784 | 785 | ### Changed 786 | 787 | * [ImglyKit] Default sticker category identifiers were changed for cross-platform compatibility and consistency with filter categories. `pesdk_sticker_asset_emoticonsStickerCategory` was changed to `imgly_sticker_category_emoticons` and `pesdk_sticker_asset_shapesStickerCategory` was changed to `imgly_sticker_category_shapes`. 788 | 789 | ### Added 790 | 791 | * [ImglyKit] Added `AssetCatalog` to configure all assets that are available to an editor instance for editing tasks. Per default the `shared` instance is used. Use the `Configuration` to setup the asset catalog. `StickerCategory.all`, `Frame.all`, `Effect.all`, `Overlay.all`, `FontImporter.all`, and `TextDesign.all` can still be used but these calls are redirected to `AssetCatalog.shared` internally. 792 | 793 | ### Fixed 794 | 795 | * [ImglyKit] Fixed sticker icon resizing based on `StickerToolControllerOptions.stickerPreviewSize`. 796 | * [ImglyKit] Fixed broken alpha channel of `imgly_frame_wood_passepartout_thumbnail.png` for source distribution via podspec. 797 | * [ImglyKit] Fixed an issue that caused the last used sticker category to not being reselected when adding another sticker. 798 | 799 | ## [10.2.1] 800 | 801 | ### Fixed 802 | 803 | * [ImglyKit] Fixed Metal compiler flags in podspec for source distribution. 804 | 805 | ## [10.2.0] 806 | 807 | ### Changed 808 | 809 | * Built with Swift 5.1 / Xcode 11.0. 810 | 811 | ### Fixed 812 | 813 | * [ImglyKit] Fixed brush not shown in transform and frame tool. 814 | 815 | ## [10.1.0] 816 | 817 | ### Added 818 | 819 | * [ImglyKit] Added `Theme.dynamic`. This theme switches dynamically between the predefined light and dark theme based on the active `UITraitCollection.userInterfaceStyle` (iOS 13 "Dark Mode"). 820 | 821 | ### Fixed 822 | 823 | * [ImglyKit] Fixed tint color in `FontSelectorViewController` for the handle button and the selected font when set via the theme. 824 | * [ImglyKit] Fixed `MediaEditViewControllerOptions.actionButtonConfigurationClosure` not being called. 825 | * [ImglyKit] Fixed race condition for remote asset downloads. 826 | 827 | ## [10.0.1] 828 | 829 | ### Fixed 830 | 831 | * [ImglyKit] Fixed a crash on iOS 12.1 and below. 832 | * [ImglyKit] Fixed sprites being misplaced in the transform and frame tools. 833 | * [VideoEditorSDK] Fixed an issue where the video would not stop playing while in a color tool controller. 834 | 835 | ## [10.0.0] 836 | 837 | The `PhotoEditorSDK.framework` was split into two frameworks, `ImglyKit.framework` and `PhotoEditorSDK.framework`: 838 | 839 | - `ImglyKit.framework` contains most of the logic that is required for rendering, displaying and editing media. 840 | - `PhotoEditorSDK.framework` contains classes that are specific to photo editing. 841 | 842 | A new `VideoEditorSDK.framework` was introduced, that uses the same `ImglyKit.framework` as `PhotoEditorSDK.framework` does. This new framework contains classes that are specific to video editing. For more details please take a look at [www.videoeditorsdk.com](https://www.videoeditorsdk.com). 843 | 844 | 845 | ### Added 846 | 847 | * [ImglyKit] Added a `MediaEditViewController` class that is the superclass for `PhotoEditViewController` and `VideoEditViewController`. 848 | * [ImglyKit] Added a `MediaEditPreviewController` class that is the superclass for `PhotoEditPreviewController` and `VideoEditPreviewController`. 849 | * [VideoEditorSDK] Added a `Video` class for passing videos to the editor. 850 | * [VideoEditorSDK] Added a `VideoEditViewController` class for video editing. 851 | * [VideoEditorSDK] Added a `VideoEditPreviewController` class for previewing videos. 852 | * [VideoEditorSDK] Added a `TrimToolController` class for trimming videos. 853 | 854 | ### Changed 855 | 856 | * [ImglyKit] `PhotoEditPreviewControllerDelegate` was renamed to `MediaEditPreviewControllerDelegate` together with all method names of the protocol. 857 | * [ImglyKit] The camera does not automatically present the editor any longer when neither `dataCompletionBlock` nor `completionBlock` was specified. You should always set `CameraViewController.dataCompletionBlock`, `CameraViewController.completionBlock` and `CameraViewController.cancelBlock`. 858 | * [ImglyKit] Video recordings that were created with the camera no longer include the applied filter. To restore the old behavior set `CameraViewControllerOptions.writeVideoWithFilterApplied` to `true`. 859 | * [ImglyKit] `Bundle.pesdkBundle` was renamed to `Bundle.imglyBundle`. 860 | * [ImglyKit] `MainFlowController.photoEditViewController` was renamed to `MainFlowController.mediaEditViewController`. 861 | * [PhotoEditorSDK] The `PhotoEditViewController` initializer doesn't have a `menuItems` parameter any longer. To update the menu items, please use `PhotoEditViewControllerOptions.menuItems`. 862 | * [PhotoEditorSDK] The `PhotoEditViewController` is a subclass of `MediaEditViewController` now. 863 | * [PhotoEditorSDK] The `PhotoEditPreviewController` is a subclass of `MediaEditPreviewController` now. 864 | * [PhotoEditorSDK] The `PhotoEditViewControllerDelegate` protocol now inherits from the `MediaEditViewControllerDelegate`, which brings the following changes: 865 | * `photoEditViewController(_ photoEditViewController: PhotoEditViewController, willPresentToolController toolController: PhotoEditToolController)` is now `mediaEditViewController(_ mediaEditViewController: MediaEditViewController, willPresentToolController toolController: PhotoEditToolController)`, 866 | * `photoEditViewController(_ photoEditViewController: PhotoEditViewController, didPresentToolController toolController: PhotoEditToolController)` is now `mediaEditViewController(_ mediaEditViewController: MediaEditViewController, didPresentToolController toolController: PhotoEditToolController)`, 867 | * `photoEditViewController(_ photoEditViewController: PhotoEditViewController, willDismissToolController toolController: PhotoEditToolController)` is now `mediaEditViewController(_ mediaEditViewController: MediaEditViewController, willDismissToolController toolController: PhotoEditToolController)`, 868 | * `photoEditViewController(_ photoEditViewController: PhotoEditViewController, didDismissToolController toolController: PhotoEditToolController)` is now `mediaEditViewController(_ mediaEditViewController: MediaEditViewController, didDismissToolController toolController: PhotoEditToolController)`. 869 | * [PhotoEditorSDK] `PhotoEditViewControllerOptions.configurePhotoEditorViewController(_:)` was renamed to `PhotoEditViewControllerOptions.configurePhotoEditViewController(_:)`. 870 | 871 | ### Removed 872 | 873 | * [PhotoEditorSDK] Removed all deprecated classes and methods. 874 | 875 | ## [9.8.3] 876 | 877 | ### Fixed 878 | 879 | * Fixed class replacement not working for `SliderTooltip`. 880 | 881 | ## [9.8.2] 882 | 883 | ### Added 884 | 885 | * Added `FilterToolControllerOptions.folderCellConfigurationClosure` to configure cells that represent a folder within the filter tool. 886 | * Added an `overlayButtonInsets` property to `AdjustToolControllerOptions`, `BrushToolControllerOptions`, `PhotoEditViewControllerOptions`, `StickerOptionsToolControllerOptions`, `TextOptionsToolControllerOptions` and `TextDesignOptionsToolControllerOptions` to easily modify the overlay button's insets in the corresponding tool controller. 887 | 888 | ### Changed 889 | 890 | * Designated initializers of `PhotoEditToolController` subclasses are now `public` to enable subclassing and thus class replacement of tools. 891 | 892 | ### Fixed 893 | 894 | * Fixed class replacement not working for `MenuListSectionController` subclasses by making all concrete subclasses of `MenuListSectionController` `open`. 895 | * Fixed `FilterToolControllerOptions.filterCellConfigurationClosure` not being called for all effect cells when using folders. 896 | 897 | ## [9.8.1] 898 | 899 | ### Fixed 900 | 901 | * Fixed customize color of title label via `titleViewConfigurationClosure`. 902 | * Fixed preview of transparent wide color images on P3 displays for iOS 11 and earlier where the transparent background appeared always black. 903 | * `PhotoEditPreviewController.previewView.backgroundColor` can now be used to change the background color of transparent images in the preview which was always black if this property was set. 904 | 905 | ## [9.8.0] 906 | 907 | ### Added 908 | 909 | * Added a sharpness option to the adjustments tool. 910 | 911 | ## [9.7.1] 912 | 913 | ### Fixed 914 | 915 | * Fixed class replacement not working for `MenuCollectionViewCell` and `ColorCollectionViewCell`. 916 | * Fixed an ambiguous constraints warning in the brush tool. 917 | * Fixed an ambiguous constraints warning in the overlay tool. 918 | * Fixed a crash when removing fonts from `PhotoEditorSDK.bundle`. 919 | * Fixed an issue where the progress indicator would not disappear when passing a `Photo` object initialized with an invalid `URL`. 920 | 921 | ### Removed 922 | 923 | * Remove unused `backgroundColor` in `ToolControllerOptions`. 924 | 925 | ## [9.7.0] 926 | 927 | ### Added 928 | 929 | * Added optional predefined light color theme and easy to use theming capabilities. The `Configuration` allows now to specify and alter the overall `Theme` at a central place. Existing customization options via closures override the properties defined by a theme. 930 | 931 | ### Fixed 932 | 933 | * Fixed `MenuListSectionController` not being subclassable. 934 | 935 | ## [9.6.1] 936 | 937 | ### Added 938 | 939 | * Added `reloadData(completion:)`, `performUpdates(animated:completion:)` and `reloadMenuItems(_:)` to `MenuViewController` to support menu reloading when implementing custom tools. 940 | 941 | ### Fixed 942 | 943 | * Fixed `AdjustToolControllerOptions.adjustToolButtonConfigurationBlock` and `AdjustToolControllerOptions.adjustToolSelectedBlock` not being exposed to Objective-C. 944 | * Fixed LUT for builtin filter with identifier `imgly_lut_lomo`. 945 | * Fixed builtin filter identifiers `imgly_lut_kdynamic`, `imgly_lut_gobblin`, and `imgly_lut_pro400` for cross-platform serialization. 946 | * Fixed default ordering of filters in order to match other platforms. 947 | * Fixed alpha value of sticker shape with identifier `pesdk_sticker_asset_badge28` which was not fully opaque before. 948 | 949 | ## [9.6.0] 950 | 951 | ### Added 952 | 953 | * Added `CameraViewController.locationAccessRequestClosure`. *Important*: If you currently have `CameraViewControllerOptions.includeUserLocation` set to `true` (the default) and still want photos taken with `CameraViewController` to be tagged with the location where the photo was taken, you will have to set this property. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string as soon as location permissions requests appear somewhere in the binary. Since we do not want to force developers integrating the SDK into their app to include a purpose string even with location tagging disabled, this closure was introduced, so that developers can decide for themselves if it is appropriate to request location access. 954 | 955 | ### Changed 956 | 957 | * Changed all `MenuViewControllerDelegate` methods to be `open` instead of `public`. 958 | * Changed `MenuListSectionController` to `open` instead of `public`. 959 | 960 | ## [9.5.0] 961 | 962 | ### Added 963 | 964 | * Added enhanced rotational and positional snapping for sprites, e.g., stickers, texts, and text designs. Global `SnappingOptions` can be configured with the `configureSnapping` method of the `ConfigurationBuilder`. 965 | 966 | ### Changed 967 | 968 | * If an expired trial license is used the SDK will now resort to the watermark mode instead of purposely crashing the app. 969 | 970 | ### Fixed 971 | 972 | * Fixed blacks and whites adjustments should not affect the alpha channel. 973 | * Fixed issues with duplicate symbols when the host app uses `IGListKit`. 974 | * Fixed `PhotoEditViewControllerOptions.actionButtonConfigurationClosure` not being called. 975 | * Fixed an issue with `FrameOptionsToolControllerOptions` showing a misaligned part of the photo when the photo is rotated. 976 | 977 | ## [9.4.1] 978 | 979 | ### Fixed 980 | 981 | * Fixed iOS Simulator issues for Objective-C. 982 | 983 | ## [9.4.0] 984 | 985 | ### Changed 986 | 987 | * Built with Swift 5.0 / Xcode 10.2. 988 | 989 | ## [9.3.0] 990 | 991 | ### Added 992 | 993 | * Added `photoEditModel` property to `CameraViewController` which allows to conveniently pass the filter settings from the camera to a `PhotoEditViewController` in a custom `dataCompletionBlock` of the `CameraViewController`. 994 | * Added `ColorPipetteView` to `ColorPickerViewController` which enables a color pipette tool for every `PipettableColor` item in a color palette. Available color palettes are configured via the `availableColors` array, e.g., in the `ColorToolControllerOptionsBuilder`, `TextColorToolControllerOptionsBuilder`, and `BrushColorToolControllerOptionsBuilder`. A pipettable color is added as the first item to the aforementioned default color palettes. 995 | 996 | ### Fixed 997 | 998 | * Fixed a bug in `TextOptionsToolController` where the menu would not display the correct font, text color, background color and alignment of a selected text. 999 | * Fixed a bug in `StickerToolController` where the optional `didEnterToolClosure` and `willLeaveToolClosure` were not executed. 1000 | 1001 | ## [9.2.0] 1002 | 1003 | ### Added 1004 | 1005 | * Added folders to the `FilterToolController` to group related filters together and to reduce clutter in the menu. To disable folders and get back the old behavior, simply set `FilterToolControllerOptions.filterGroups` to `[]`. 1006 | * Added our new duotone filters to the default filters in `Effect.all`. 1007 | 1008 | ### Changed 1009 | 1010 | * Changed the display name of a couple of filters. Their identifier remain the same to maintain compatibility with existing serializations. 1011 | 1012 | ### Fixed 1013 | 1014 | * Improved performance when interacting with multiple stickers. 1015 | * Fixed `TextFontToolControllerOptions.actionButtonConfigurationClosure` to receive a reference to the cell and the matching `Font` object instead of just a string. 1016 | 1017 | ## [9.1.1] 1018 | 1019 | ### Changed 1020 | 1021 | * Changed the company name. 1022 | * Source code is now compatible with Swift 5. 1023 | 1024 | ### Fixed 1025 | 1026 | * Fixed camera crop to square preview view. 1027 | * Fixed sticker tint modes with alpha values other than one. 1028 | 1029 | ## [9.1.0] 1030 | 1031 | ### Added 1032 | 1033 | * Added `Effect` type as the base class for any filter effect that can be applied to an image. 1034 | * Added new duotone filter effect `DuoToneEffect`. 1035 | 1036 | ### Changed 1037 | 1038 | * The `PhotoEffect` class has been deprecated. Its initializers have been split into two new `Effect` subclasses. The `LUTEffect` is the most commonly used filter effect based on an image-based lookup table (LUT) and the `CoreImageEffect` allows to use any registered Core Image filter. 1039 | * All occurrences of `photoEffect` have been renamed to `effect`. Backward-compatible interfaces are introduced and marked as deprecated. Xcode will provide renaming suggestions. 1040 | 1041 | ### Fixed 1042 | 1043 | * Fixed rare crash when opening the frame tool. 1044 | * Fixed image export with colorized stickers. 1045 | * Fixed deserializations with colorized stickers. 1046 | * Fixed readability issue with the text input field in the text design tool. The text input string does not change its color anymore. 1047 | 1048 | ## [9.0.0] 1049 | 1050 | ### Added 1051 | 1052 | * Added `MenuCollectionViewCell` which is used for all cells throughout the main menus. This consolidates multiple `UICollectionViewCell` subclasses which were used previously and enables easier customization. 1053 | * Added undo and redo to `AdjustToolController`. 1054 | * Added a reset button to `AdjustToolController`. 1055 | * Added a reset button to `TransformToolController`. 1056 | * Added a replace button to `StickerOptionsToolController`. 1057 | * Added an opacity button to `StickerOptionsToolController`. 1058 | * Added `FrameOptionsToolController` to modify the width and opacity of a frame. 1059 | 1060 | ### Changed 1061 | 1062 | * The design of the cells in the main menus was slightly changed and unified across tools. 1063 | * The design of the title in the lower toolbar was slightly changed to an all caps label with more character spacing. 1064 | * Updated the Text Design tool to allow adding multiple Text Design objects. 1065 | * Updated the Text Design inversion mechanism so that the user is able to adjust the padding of an inverted Text Design. 1066 | * Replaced the blend mode selection view in `OverlayToolController` with a button to toggle between available blend modes. 1067 | * Multiple icons were replaced across the SDK. 1068 | * Instead of passing an array of `UIColor` objects and an array of matching `String` objects, describing the name of the color, the SDK now expects an array of `Color` objects. 1069 | * The default hardness of a new brush stroke was changed from `1.0` to `0.5`. 1070 | * `DefaultLogger` was updated to use `OSLog` on iOS 10.0 and later instead of regular `print` statements. 1071 | * Changed the default tool order so that the Focus tool is next to the Adjust tool. 1072 | 1073 | ### Fixed 1074 | 1075 | * Fixed a bug in the brush tool, where the size of the stroke's preview and an actual stroke on the canvas would mismatch. 1076 | * The `StickerToolController` now opens with the previously selected sticker category. 1077 | * Excess padding on the left and right of `TextDesignSunshine` was removed. 1078 | * `TextDesignBlocksLight` now displays decorative lines as seen in its preview. 1079 | * Fixed a bug where the output image would be black when adding a sticker and tinting it using the `.colorized` tint mode on iOS 12.0 and devices supporting Metal. 1080 | * Fixed a bug where the camera preview would be darker than the actual image on iPhone XS devices. 1081 | 1082 | ### Removed 1083 | 1084 | * Removed `ActivityBorderedCollectionViewCell` in favor of `MenuCollectionViewCell`. 1085 | * Removed `BorderedCollectionViewCell` in favor of `MenuCollectionViewCell`. 1086 | * Removed `IconBorderedCollectionViewCell` in favor of `MenuCollectionViewCell`. 1087 | * Removed `IconCaptionCollectionViewCell` in favor of `MenuCollectionViewCell`. 1088 | * Removed `LabelBorderedCollectionViewCell` in favor of `MenuCollectionViewCell`. 1089 | * Removed `LabelCaptionCollectionViewCell` in favor of `MenuCollectionViewCell`. 1090 | * Removed `LabelIconBorderedCollectionViewCell` in favor of `MenuCollectionViewCell`. 1091 | * Removed `FilterCollectionViewCell` in favor of `MenuCollectionViewCell`. 1092 | * Removed all previously deprecated API. 1093 | * Removed all `AsNSNumber` properties. These are now exposed to Objective-C with their regular name (e.g. `allowedAdjustOverlayActions ` instead of `allowedAdjustOverlayActionsAsNSNumbers`. 1094 | * Removed mapping between old localization keys and new localization keys. 1095 | 1096 | ## [8.6.4] 1097 | 1098 | ### Fixed 1099 | 1100 | * Fixed a bug where the camera preview would be distorted. 1101 | 1102 | ## [8.6.3] 1103 | 1104 | ### Fixed 1105 | 1106 | * Fixed an issue where setting the background color of the preview view would not work when using the Metal renderer. 1107 | * Fixed a very rare deadlock when loading fonts caused by a bug in iOS 10. 1108 | * Fixed an issue where the filter thumbnail cache would use more memory than required. 1109 | 1110 | ## [8.6.2] 1111 | 1112 | ### Added 1113 | 1114 | * Added `TransformToolControllerOptions.scalePickerContainerViewConfigurationClosure` to enable customization of the scale picker's container view. 1115 | 1116 | ### Fixed 1117 | 1118 | * Fixed an issue with missing text when deserializing a text design. 1119 | * Fixed rendering issues on devices running iOS 12 but that do not have an A8 chip at least. 1120 | * Fixed live filters not working in the camera. 1121 | 1122 | ## [8.6.1] 1123 | 1124 | ### Fixed 1125 | 1126 | * The drop shadow of the UI controls to modify the focus in the focus tool had an y-offset of 1, which doesn't make sense because the controls can be rotated. This has been fixed by changing the y-offset to 0. 1127 | * Fixed a bug where it was possible to make a text larger than the allowed maximum width. 1128 | * Fixed a bug where the position of text in the preview and in the final image would not match. 1129 | * Fixed a crash when clearing the text of an already created text design. 1130 | * Fixed an issue with emojis in multiline text designs. 1131 | 1132 | ## [8.6.0] 1133 | 1134 | ### Changed 1135 | 1136 | * Migrated to Swift 4.2 and built the SDK with Xcode 10.0. 1137 | * Updated the renderer to use Metal instead of OpenGLES on iOS 12 and supported devices. 1138 | 1139 | ## [8.5.0] 1140 | 1141 | ### Added 1142 | 1143 | * Added `PhotoEditViewController.presentTool(for:)` to programmatically present the tool for a given `ToolMenuItem`. This can be used to directly transition to one of the tools when presenting the editor. 1144 | 1145 | ### Changed 1146 | 1147 | * Changed all localization keys throughout the SDK to match the pattern `pesdk_context_type_description` where `context` is usually the tool where the string appears (e.g. `focus`), `type` represents the type of the string such as `button` or `text` and `description` represents the actual use of the string, such as `brightnessIntensitySliderLabel`. This scheme is now used on the other platforms as well. We're falling back to the old localization keys in case the new ones can't be found to not break backwards compatibility, but we suggest you adopt the new keys as soon as possible. 1148 | 1149 | ## [8.4.1] 1150 | 1151 | ### Fixed 1152 | 1153 | * Fixed a crash when done drawing a stroke in the brush tool. 1154 | 1155 | ## [8.4.0] 1156 | 1157 | ### Added 1158 | 1159 | * Added a linear focus mode to the focus tool. 1160 | * Added a gaussian focus mode to the focus tool. 1161 | * Added temperature adjustments to the adjustment tool. 1162 | * Added blacks adjustments to the adjustment tool. 1163 | * Added whites adjustments to the adjustment tool. 1164 | 1165 | ### Changed 1166 | 1167 | * The text tool now uses the same text settings of the last selected text when creating new texts. 1168 | * The `FocusType` type has been deprecated because it used incorrect namings. It is replaced by the `FocusMode` type, which uses the same namings as the PhotoEditor SDK on HTML5 and Android. More specifically `FocusType.linear` is now `FocusMode.mirrored` and `FocusType.gradient` is now `FocusMode.linear`, `.radial` and `.gaussian` remain the same. 1169 | * The SDK can now be used for testing purposes without unlocking it with a license. A watermark image will be displayed above the edited photo in such cases. 1170 | 1171 | ## [8.3.10] 1172 | 1173 | ### Added 1174 | 1175 | * Added the option to adjust the gamma in the adjustments tool. 1176 | 1177 | ### Fixed 1178 | 1179 | * Fixed a crash when instantiating a `PESDKPhotoEditMenuItem` with Objective-C for a tool that is not licensed. 1180 | 1181 | ## [8.3.9] 1182 | 1183 | ### Added 1184 | 1185 | * Added `PhotoEditViewController.serializedSettings(withImageData:)` which enables you to specify whether or not to include image data in the generated JSON. It is recommended that the image is not included in the JSON but saved as a separate file. 1186 | * Added `PhotoEditViewControllerOptions.useParentNavigationItem`, allowing for the `PhotoEditViewController` to be embedded inside a custom container view controller inside a `UINavigationController`. 1187 | * Added accessibility support to the Text Design tool. 1188 | 1189 | ### Changed 1190 | 1191 | * Changed serialization to require a `Photo` object instead of `UIImage`. This improves memory usage. 1192 | * Improved serialization performance when not including image data in the serialization. 1193 | * Changed the Text Design Tool icon. 1194 | 1195 | ### Fixed 1196 | 1197 | * Fixed a bug where the edit screen would not be dismissed when changing the text of an already added text design from within the `TextDesignOptionsToolController`. 1198 | 1199 | ## [8.3.8] 1200 | 1201 | ### Fixed 1202 | 1203 | * Fixed multiple layout issues in the text design tool. 1204 | 1205 | ## [8.3.7] 1206 | 1207 | ### Added 1208 | 1209 | * Added support for gaussian and gradient focus to the renderer, to support cross-platform (de-)serialization. 1210 | * Added support for custom frame sizes to the renderer, to support cross-platform (de-)serialization. 1211 | 1212 | ### Fixed 1213 | 1214 | * Fixed an issue with an incorrect deserialized focus gradient size. 1215 | * Fixed a layout issue in the `FontSelectorView`. 1216 | 1217 | ## [8.3.6] 1218 | 1219 | ### Fixed 1220 | 1221 | * Fixed a retain cycle in the serialization test suite. 1222 | * Fixed a bug when deserializing an unknown type of focus. 1223 | * Fixed a bug that added a little rotation to stickers and text when the image is flipped, the state is serialized and then again deserialized. 1224 | * Fixed a memory issues with labels that have a huge height by limiting the maximum allowed height. 1225 | * Fixed a bug where the UI would become unresponsive when the editor is embedded in an `UINavigationController` and the user very quickly closes a tool after opening it. 1226 | * Fixed a bug in the filter and focus shaders that prevented the iOS 12 shader compiler from compiling the shaders. 1227 | 1228 | ## [8.3.5] 1229 | 1230 | ### Fixed 1231 | 1232 | * Fixed a race condition when setting `StickerCategory.all`. 1233 | * Fixed a race condition in `PaintingFragment`. 1234 | * Fixed a layout bug when embedding `PhotoEditViewController` in a `UINavigationController` with an opaque navigation bar. 1235 | * Fixed an issue where drawing a new path in the brush tool would flicker. 1236 | 1237 | ## [8.3.4] 1238 | 1239 | ### Fixed 1240 | 1241 | * Fixed an issue where deserializing a brush would not load its first point. 1242 | * Fixed an issue where drawing a dot in the brush tool was not possible. 1243 | * Fixed an issue where `renderPipelineBlock` was not called during the high resolution rendering. 1244 | * When embedding the `PhotoEditViewController` in an `UINavigationController`, the `tintColor`, `imageEdgeInsets` and `backgroundImage` properties of the toolbar buttons are copied to the buttons in the navigation bar. 1245 | 1246 | ## [8.3.3] 1247 | 1248 | ### Fixed 1249 | 1250 | * Fixed an issue with iTunes Connect not accepting the build when integrating the SDK via CocoaPods. 1251 | 1252 | ## [8.3.2] 1253 | 1254 | ### Fixed 1255 | 1256 | * Fixed a bug where setting a title on a discard or apply button would not work when embedding the `PhotoEditViewController` in a `UINavigationController`. 1257 | * Fixed a crash when setting `StickerCategory.all` to an array of sticker categories with duplicate titles while the `StickerToolController` was visible. 1258 | 1259 | ## [8.3.1] 1260 | 1261 | ### Fixed 1262 | 1263 | * Fixed a crash when increasing the width of text too much. 1264 | * Fixed an issue with color spaces. Colors are now always displayed correctly and the exported image will have the Display P3 color space on supported devices. Some filters still do not support wide color gamuts and clamp to the sRGB gamut. This will be fixed in a future update. 1265 | * Fixed a crash when updating stickers or sticker categories from a thread different than the main thread while the sticker tool was visible. 1266 | * Removed the new -Osize Swift optimization mode for now, because iTunes Connect rejects binaries built with it. 1267 | 1268 | ## [8.3.0] 1269 | 1270 | ### Added 1271 | 1272 | * Added support for HEIF image exports. See `PhotoEditViewControllerOptions.outputImageFileFormat` for more details. 1273 | * Added backend support for gamma correction. 1274 | 1275 | ### Changed 1276 | 1277 | * Built with Swift 4.1 / Xcode 9.3. 1278 | * Switched from `Float` to `Double` in all photo edit and serialization models, because converting an `NSNumber` implicitly to `Float` (e.g. `NSNumber(0.26) as? Float`) returns `nil` with Swift 4.1 if it can't be represented exactly by a float. 1279 | * When updating `StickerCategory.all` while the sticker selection tool is visible, it now automatically reloads the available categories and stickers. 1280 | 1281 | ### Fixed 1282 | 1283 | * Fixed some minor layout bugs on iPhone X. 1284 | * Fixed an issue where the dSYM file would not be integrated into the final app when using CocoaPods. 1285 | * Fixed an issue with the SoftLight blend mode not looking as expected. 1286 | * Fixed an issue with the brush not respecting the hardness when deserializing. 1287 | * Fixed an issue with the first path of a brush not being drawn when deserializing. 1288 | * Fixed an issue with the radial blur being misplaced when deserializing. 1289 | * Fixed an issue with overlays being misaligned. 1290 | 1291 | ## [8.2.4] 1292 | 1293 | ### Added 1294 | 1295 | * Added an option to show a close button in the `CameraViewController`. See `CameraViewControllerOptions. showCancelButton`, `CameraViewControllerOptions.cancelButtonConfigurationClosure` and `CameraViewController.cancelBlock` for more details. 1296 | * Added full support for right-to-left languages. 1297 | 1298 | ### Fixed 1299 | 1300 | * Fixed an issue where the flash icon would not be visible while the camera was in video mode. 1301 | * Fixed an issue where all Objective-C bridged `SpriteModel`s were of type `PESDKSpriteModel` instead of their concrete subclasses. 1302 | * Fixed an issue with the toolbar having the wrong size while the keyboard was active on an iPhone X. 1303 | * Fixed an issue where focus would not work in the camera after switching from back to front camera. 1304 | 1305 | ## [8.2.3] 1306 | 1307 | ### Fixed 1308 | 1309 | * Fixes an issue with the transform tool not rotating correctly. 1310 | * Fixes an issue where an overlay would not be applied when selecting the 'Normal' blend mode. 1311 | 1312 | ## [8.2.2] 1313 | 1314 | ### Fixed 1315 | 1316 | * Fixes an issue with the size of rotated stickers on iOS 10. 1317 | 1318 | ## [8.2.1] 1319 | 1320 | ### Fixed 1321 | 1322 | * Overlays and blur handle transparency correctly now. 1323 | * `TextFontToolControllerOptions.fontSelectorViewConfigurationClosure` and `TextFontToolControllerOptions.handleButtonConfigurationClosure` work as expected now. 1324 | * Fixes an issue with undoing brush strokes. 1325 | * Fixes an issue where the undo or redo buttons would be active although there was nothing to undo/redo. 1326 | * Fixes a bug where video recording would take a long time to stop on older devices. 1327 | * Fixes a rare crash with the license checker on iOS 9. 1328 | 1329 | ## [8.2.0] 1330 | 1331 | ### Added 1332 | 1333 | * Added a check that verifies that no two assets have the same identifier. 1334 | * Added a `Photo` class that wraps different types of image data. Added `PhotoEditViewController(photoAsset:configuration:menuItems:photoEditModel:)` and `PhotoEditPreviewController(photoAsset:photoEditModel:)` and deprecated all previous initializers of both classes in favor of those. Please take a look at the API documentation for the `Photo` class, as using it correctly can have a huge impact on the memory footprint of the SDK. 1335 | * Added `accessibilityIgnoresInvertColors` where needed. 1336 | * PNG support, see `PhotoEditViewControllerOptions.outputImageFileFormat` for more details. 1337 | * Added `PESDK.renderPipelineBlock` which can be used to modify each stage of the render pipeline. 1338 | 1339 | ### Fixed 1340 | 1341 | * The top screen edge system gesture is now deferred to avoid conflicts with the transform tool. 1342 | * The touchable area for `leftButton` and `rightButton` in the toolbar is wider now. 1343 | * Removed all server calls for enterprise licenses. 1344 | * Fixed invalid license check in `BrushColorToolController` and `TextOptionsToolController`. 1345 | * Improved performance and memory usage. 1346 | 1347 | ## [8.1.3] 1348 | 1349 | ### Fixed 1350 | 1351 | * Fixed a bug where `FrameToolControllerOptions.cellConfigurationClosure` would not be called. 1352 | 1353 | ## [8.1.2] 1354 | 1355 | ### Fixed 1356 | 1357 | * Fixed a crash when narrowing the text bounding box while zoomed in on the image. 1358 | 1359 | ## [8.1.1] 1360 | 1361 | ### Added 1362 | 1363 | * Added haptic feedback for supported devices. 1364 | * Added class replacement support for `StickerImageView`, `FrameImageView`, `SpriteLabel`, `Painting` and `CanvasView`. 1365 | 1366 | ### Changed 1367 | 1368 | * Made the `BrushSpriteModel` initializers public. 1369 | 1370 | ### Fixed 1371 | 1372 | * Fixed a bug where custom fonts would not be loaded. 1373 | * Fixed an issue where sticker and sticker category thumbnails would sometimes have lower resolution. 1374 | 1375 | ## [8.1.0] 1376 | 1377 | ### Added 1378 | 1379 | * Added the possibility to change a sticker's brightness, contrast and saturation. Take a look at `Sticker.allowBrightnessAdjustment`, `Sticker.allowContrastAdjustment`, `Sticker.allowSaturationAdjustment` and `StickerAction.brightness`, `StickerAction.contrast`, `StickerAction.saturation` for more details. 1380 | * iPhone X support for `CameraViewController`. 1381 | * Added `TextToolControllerOptions.dimmingViewConfigurationClosure`. 1382 | 1383 | ### Changed 1384 | 1385 | * `Font` expects an `URL` instead of a `String` now. 1386 | 1387 | ### Fixed 1388 | 1389 | * Fixed a misplaced title view on iOS 9 when embedding the `PhotoEditViewController` inside a `UINavigationController`. 1390 | * `StickerToolController` displays the currently selected sticker category as its title again. 1391 | * The color picker's saturation and brightness picker updates as expected now when saturation is set to 0 and the user drags the hue picker. 1392 | * `ColorPickerViewController` and `FontSelectorViewController` didn't call `addChildViewController(_:)` and `didMove(toParentViewController:)` for their contained `SpriteEditController`, resulting in layout issues. 1393 | 1394 | ## [8.0.1] 1395 | 1396 | ### Fixed 1397 | 1398 | * Fixed a bug where static frames would not be shown. 1399 | * Made `PhotoEditViewController.init(photo:data:configuration:menuItems:photoEditModel:)` public to enable subclassing `PhotoEditViewController`. 1400 | * Fixed new warnings generated by Xcode 9.1 beta. 1401 | * Fixed a bug where undo and redo would not work correctly when drawing out of bounds within the brush tool. 1402 | 1403 | ## [8.0.0] 1404 | 1405 | ### Added 1406 | 1407 | * Full support for iOS 11 and Swift 4. 1408 | * Added rotation gesture support to `FrameToolController` (disabled by default). 1409 | * Added serialization format v3.0.0, which can be used to serialize and deserialize edits across all platforms. 1410 | * Added support for the iPhone X to `PhotoEditViewController`. 1411 | 1412 | ### Changed 1413 | 1414 | * Completely refactored the sprite handling code. Sprites (stickers, text, brush and frames) are now directly rendered on top of the image instead of rendering a view snapshot. This results in better looking images, better performance and more robust code. 1415 | * Completely refactored `PhotoEditViewController` and all `PhotoEditToolController` subclasses. We make heavy use of composition and container view controllers now, leading to better support for customizations and custom user interfaces. 1416 | * All view controllers and views can be replaced by a custom subclass using `PESDK.replaceClass(_:with:)` for even better customization options. 1417 | * Undo and redo is now supported by all tools. The sticker, text and brush tools continue to have a local undo/redo stack in addition to the global undo/redo stack. 1418 | 1419 | ### Fixed 1420 | 1421 | * Fixed an issue where the selected crop rectangle would change after tapping the apply button in the transform tool. 1422 | * Fixed an issue where focus would change its appearance and position after transform. 1423 | * Fixed an issue where the color saturation and brightness picker would sometimes not update while dragging the hue picker. 1424 | * The `PhotoEditViewController` can now be pushed onto a navigation controller that uses a translucent navigation bar. 1425 | * Fixed various layout issues with the transform and frame tools. 1426 | * Fixed a crash when quickly switching between a sticker and text. 1427 | 1428 | ### Removed 1429 | 1430 | * Removed the transparent color from the default color palette for text color and brush color. 1431 | * The `ToolbarController` class has been removed. An instance of `PhotoEditViewController` can now be used directly. 1432 | 1433 | ## [7.3.0] 1434 | 1435 | ### Fixed 1436 | 1437 | * Fixed a layout issue in tool controllers when zooming is disabled. 1438 | * Fixed a memory issue while deserializing. 1439 | * Fixed an issue in the transform tool where the selected crop rectangle would sometimes not match the actual crop rectangle. 1440 | * Fixed an issue with the image renderer emitting a warning. 1441 | 1442 | ### Deprecated 1443 | 1444 | * Serialization version 2.0.0 has been deprecated in this release and will not be supported by future versions of the SDK. Please use PhotoEditor SDK 8.0 with serialization version 3.0.0 instead. 1445 | 1446 | ## [7.2.0] 1447 | 1448 | ### Added 1449 | 1450 | * `PhotoEditViewController` has a new property called `hasChanges`, which is `true` if a user applied any changes to a photo. 1451 | * `StickerToolControllerOptions` has a new property called `defaultStickerCategoryIndex` that can be used to specify the index of the initially selected sticker category. 1452 | * All `UICollectionViewCell` subclasses can be replaced with custom subclasses using `Configuration`'s `replaceClass(_:replacingClass:moduleName:)` method. 1453 | 1454 | ### Changed 1455 | 1456 | * `TransformToolController` now sends a `.transformStraightenAngleChange` analytics event for changes of the straighten angle. 1457 | * `TransformToolController` now includes `.cropRect`, `.straightenAngle` and `.aspectRatio` attributes in its `.applyChanges` analytics event. 1458 | * When adding or removing a sticker a `.stickerAdd` or `.stickerRemove` analytics event is sent with the associated sticker as a `.sticker` attribute. Those events are also sent when adding or removing a sticker by tapping the undo/redo buttons. 1459 | * When adding or removing text a `.textAdd` or `.textRemove` analytics event is sent with the associated text as a `.text` attribute. Those events are also sent when adding or removing text by tapping the undo/redo buttons. 1460 | * `TextOptionsToolController` now includes `.text`, `.font`, `.textColor`, `.backgroundColor` and `.alignment` attributes in its `.applyChanges` analytics event. 1461 | 1462 | ## [7.1.1] 1463 | 1464 | ### Added 1465 | 1466 | * `CameraViewControllerOptions` includes a `includeUserLocation` property now that is `true` by default. It can be used to stop the camera from asking for the user's location. 1467 | 1468 | ### Changed 1469 | 1470 | * `LoggerProtocol` is now a `class` protocol because loggers are required to be reference types in the current implementation. 1471 | 1472 | ### Fixed 1473 | 1474 | * Fixed several smaller bugs regarding deserialization. 1475 | * Sometimes the cropping area would be resized while modifying the straighten angle. 1476 | * Memory is not copied twice anymore during painting fragment restoration. 1477 | * The project compiles with Xcode 9 now. 1478 | 1479 | ## [7.1.0] 1480 | 1481 | ### Added 1482 | 1483 | * The camera tags photos with their location now. This only works when using `Data` instances instead of `UIImage` instances to pass the photo around because those strip EXIF data. See `CameraViewController.dataCompletionBlock` for more details. 1484 | * We added a default confirmation dialog when dismissing the editor with changes pending. This can be changed or disabled by setting `PhotoEditViewControllerOptions.discardConfirmationClosure`. 1485 | 1486 | ### Changed 1487 | 1488 | * The preview image is now automatically resized when a slider overlays the preview at the bottom, so that is always completely visible. 1489 | * We replaced the gaussian blur used in the focus tool with a lens blur like effect for much better looking photos. This does not work on the following older devices where we continue to use a gaussian blur due to performance issues: 1490 | * iPad mini 1st, 2nd and 3rd gen 1491 | * iPad 2nd and 3rd gen 1492 | * iPhone 4S 1493 | * iPod touch 1494 | 1495 | ### Fixed 1496 | 1497 | * Fixed various issues with the serialization and deserialization features. 1498 | * Fixed an issue with different color spaces used for the preview and the thumbnails in the filter tool. 1499 | * Stickers now use anti-aliasing. 1500 | * The icon of the 'No Frame' cell in the frame tool is now tinted with the cell's `tintColor` to better match other cells. 1501 | * The label of the 'Magic' cell in the main menu is now tinted with the cell's `tintColor` when highlighted to better match other cells. 1502 | * The `Slider` now sends a `.touchUpInside` event after a `.touchDown` event has been sent without dragging in between. 1503 | * When adding a frame to a photo it would sometimes not completely cover the preview image (by about 1 px). 1504 | * When selecting a sticker with its `tintMode` set to `.none` and then dismissing the `StickerOptionsToolController`, the color option would be visible for a split second during the dismissal animation. 1505 | * The `BoxGradientView` and `CircleGradientView` now only draw themselves while visible, resulting in a minor performance improvement. 1506 | * Sprites didn't have the correct position for a split second when opening the frame tool. 1507 | * Sprites would be rotated in the wrong direction when the photo has been flipped. 1508 | * Text bounding box resizing would be inverted if the image has been flipped and rotated. 1509 | 1510 | ## [7.0.1] 1511 | 1512 | ### Added 1513 | 1514 | * Added the ability to zoom using a pinch gesture within the `CameraViewController`. 1515 | 1516 | ### Fixed 1517 | 1518 | * The icon of the 'No Overlay' option in the overlay tool was not using its @2x and @3x variants. 1519 | * Fixed a bug with the new filters and adjustments. 1520 | * Fixed interface rotation support. 1521 | 1522 | ## 7.0 1523 | 1524 | ### Changed 1525 | 1526 | * **The SDK has been renamed from `imglyKit` to `PhotoEditorSDK` and all class prefixes have been renamed from `IMGLY` to `PESDK`. Likewise the CocoaPod has been renamed to `PhotoEditorSDK`.** 1527 | * We now ship the framework as a DMG file and include the dSYM file and bcsymbolmaps for better debugging. To integrate the dSYM into your final app, please follow the [updated manual integration guide](https://docs.photoeditorsdk.com/guides/ios/v7_1/introduction/getting_started). 1528 | * The `PESDK.shared` singleton has been removed. All of its properties are now static properties on the `PESDK` class. 1529 | * The default progress view must be set using the static `PESDK.progressView` property instead of the `Configuration` closure. 1530 | * The integrated fonts have been changed. 1531 | * The `AdjustToolController` has been improved for much better looking and faster adjustments. 1532 | * We were able to significantly decrease the size of our filter's lookup images while also improving the filter's performance. 1533 | * All asset names have been changed to a consistent naming scheme. 1534 | * The overall look and feel of the `FrameToolController` has been improved. 1535 | * Custom stickers are now added by setting `Sticker.all`, custom fonts are added by setting `FontImporter.all`, custom frames are added by setting `Frame.all` and custom overlays are added by setting `Overlay.all` instead of using the `Configuration` class. 1536 | 1537 | ### Added 1538 | 1539 | * Serialization and deserialization has been added. Because of this many classes (e.g. `Sticker`, `Frame`) now require an `identifier`. For more information please see the documentation. 1540 | * The `OverlayToolController` tool has been added, which can be used to add overlays to a photo. Please see the documentation for more information. 1541 | * A custom logger with varying log levels was added. See documentation for more information. 1542 | * The `Sticker` class now supports `.colorized` as its `tintMode`. See the API documentation for more information. 1543 | * A 3:2 crop aspect has been added to `TransformToolController`'s defaults. 1544 | * An Emoticon and a Shapes sticker set has been added. 1545 | * `TextFontToolControllerOptions` now has a `fontSelectorViewConfigurationClosure` property and a `handleButtonConfigurationClosure` property for better customization. 1546 | * `StickerToolControllerOptions` now has a `stickerPreviewSize` property to adjust the size of the stickers in the preview. 1547 | 1548 | ### Removed 1549 | 1550 | * The Toy sticker set has been removed. 1551 | 1552 | ### Fixed 1553 | 1554 | * The button to show/hide the font selector view within the `TextFontToolController` now respects the view's `tintColor`. 1555 | * Full accessibility support has been restored. 1556 | 1557 | ## [6.5.4] 1558 | 1559 | ### Changed 1560 | 1561 | * With the color picker expanded you can now tap anywhere above it to dismiss the color picker. 1562 | * We restored iOS 8 compatibility in this release. Please note that this only means that the framework can be integrated into a target with iOS 8 as its deployment target. However most classes and especially all view controllers are *not* available on iOS 8. We strongly advise that you disable any editing functions for users running iOS 8. 1563 | 1564 | ## [6.5.3] 1565 | 1566 | ### Changed 1567 | 1568 | * We replaced the set of included fonts with much better looking fonts. 1569 | 1570 | ## [6.5.2] 1571 | 1572 | ### Fixed 1573 | 1574 | * Fixed a crash when adding text. This was introduced by the Swift 3.1 compiler, see [SR-4393](https://bugs.swift.org/browse/SR-4393) for more details. 1575 | 1576 | ## [6.5.1] 1577 | 1578 | ### Fixed 1579 | 1580 | * Fixed an issue with the `forceCropMode` setting. 1581 | 1582 | ## [6.5.0] 1583 | 1584 | ### Changed 1585 | 1586 | * This version is compiled with Swift 3.1 and can be used with Xcode 8.3. It does not contain any other changes. 1587 | 1588 | ## [6.4.2] 1589 | 1590 | ### Fixed 1591 | 1592 | * Fixed a scaling issue regarding backdrops. 1593 | 1594 | ## [6.4.1] 1595 | 1596 | ### Changed 1597 | 1598 | * Sticker and text overlays have a bigger touch area so that they are easier to grab. 1599 | 1600 | ### Fixed 1601 | 1602 | * Fixed a rare crash in `CameraViewController` that occurred when disabling focus lock while deallocating the controller. 1603 | 1604 | ## [6.4.0] 1605 | 1606 | ### Added 1607 | 1608 | * Added a `discardConfirmationClosure` property to `PhotoEditViewControllerOptions` that is called when tapping the cancel button while changes are applied to the image. 1609 | * Zooming is now enabled in all tools except for the focus tool. 1610 | 1611 | ### Changed 1612 | 1613 | * The overlay buttons (i.e. undo, redo, etc.) in the sticker, text and brush tool have been moved to the bottom. 1614 | * `StickerTintMode.tint` has been renamed to `StickerTintMode.solid`. 1615 | * `StickerTintMode.ink` has been renamed to `StickerTintMode.colorized`. 1616 | * When adding long text the created label breaks the text into multiple lines if the font size would be too small otherwise. 1617 | * `IMGLYSetLocalizationDictionary` has been replaced by `PESDK.localizationDirectory`. 1618 | * `IMGLYSetLocalizationBlock` has been replaced by `PESDK.localizationBlock`. 1619 | * `IMGLYSetBundleImageBlock` has been replaced by `PESDK.bundleImageBlock`. 1620 | 1621 | ### Fixed 1622 | 1623 | * `DefaultProgressView` was not positioned correctly when used in an iPad Split View environment. 1624 | * The menu collection views were not positioned correctly when used in an iPad Split View environment. 1625 | 1626 | ## [6.3.1] 1627 | 1628 | ### Fixed 1629 | 1630 | * Fixed warnings that are generated by SwiftLint 0.16.1. 1631 | * Moved the overlay image generation to a background queue, so that the progress view appears immediately when the user taps the save button. 1632 | * Fixed an ambiguous constraints warning in `CameraViewController`. 1633 | * Fixed an issue where the loading progress view would disappear while presenting the editor. 1634 | 1635 | ## [6.3.0] 1636 | 1637 | ### Added 1638 | 1639 | * Added an option to change the default color of newly added text (see `TextToolControllerOptions.defaultTextColor`). 1640 | * A progress view is displayed while generating the preview image now. 1641 | * Tinting of stickers can be enabled on a per sticker basis (see `Sticker.tintMode`). 1642 | * Crop Aspect Ratios can be rotated by tapping on an already selected crop aspect (see `CropAspect.isRotatable`). 1643 | 1644 | ### Changed 1645 | 1646 | * Changed the default icon of the transform tool. 1647 | * The magic tool displays a selected state when active. 1648 | * The `.straighten` option has been removed from the default options of `TextOptionsToolController` and `StickerOptionsToolController`. 1649 | * The `.flip` option has been removed from the default options of `TextOptionsToolController`. 1650 | * The alignment, bring to front, straighten and flip buttons within `TextOptionsToolController` were moved from an overlay into the menu. 1651 | * When resizing text the bounding box of the text becomes wider along with the font size. 1652 | * While the `BrushColorToolController` is active the user can continue to paint in the canvas. 1653 | * Editing text works by just single tapping on an already selected label instead of long pressing. 1654 | * The delete button within the brush tool was moved to the top, the bring to front button was moved from an overlay into the menu. 1655 | * The flip, straighten and bring to front buttons within `StickerOptionsToolController` were moved from an overlay into the menu. 1656 | 1657 | ### Fixed 1658 | 1659 | * Fixed a crash that occurred when opening the transform tool very quickly after presenting the editor. 1660 | * Fixed an issue with the brush tool that occurred when opening the brush very quickly after presenting the editor. 1661 | * Fixed an issue where the progress view would not disappear when tapping the save button. 1662 | * Fixed an issue regarding the frame tool and rotated images. 1663 | * Fixed a bug where a crop would sometimes be applied although the user tapped the cancel button. 1664 | * When changing a text the changes are reflected in the label while typing. 1665 | * Fixed a crash in `CameraController`. 1666 | 1667 | ## [6.2.0] 1668 | 1669 | ### Added 1670 | 1671 | * Support for wide color images. More information is available [here](https://medium.com/imgly/bringing-wide-color-to-photoeditor-sdk-a6ce8bb19ef7#.1nw0egenf). 1672 | * Added redo support and optimized undo support. Each time the sticker, text or brush tool is openend, a new undo/redo stack is created and local changes within those tools can be un- and redone. The `PhotoEditViewController` also has support for undo and redo and performs all undo or redo operations of the tools mentioned above combined, either step by step or tool by tool (see `PhotoEditViewControllerOptions.undoStepByStep`). 1673 | 1674 | ### Changed 1675 | 1676 | * `M_PI` has been replaced by `.pi`, `FLT_EPSILON` has been replaced by `.ulpOfOne` 1677 | * Adding a new sticker from within the `StickerOptionsToolController` now opens the already instantiated `StickerToolController` that was passed to `PhotoEditViewController` instead of creating a new instance. 1678 | * The blur radius specified in the `FocusToolController` is now relative to the smaller side of the image instead of an absolute value, which means that the final output image looks like the preview image. 1679 | 1680 | ### Fixed 1681 | 1682 | * Fixed a crash that occurred when setting `CameraViewControllerOptions.showFilters` to `false`. 1683 | 1684 | ## [6.1.4] 1685 | 1686 | ### Fixed 1687 | 1688 | * Fixed a crash in `CameraViewController`. 1689 | * The `photoActionButtonConfigurationClosure` closure was not called initially. 1690 | * Changing the `tintColor` of the button to take a photo works now. 1691 | 1692 | ## [6.1.3] 1693 | 1694 | ### Added 1695 | 1696 | * Added default intensities for blend modes. 1697 | 1698 | ### Changed 1699 | 1700 | * Changed some `enum`s to lower case to match Swift 3.0 naming conventions. 1701 | 1702 | ### Fixed 1703 | 1704 | * Fixed a memory leak in `CameraViewController`. 1705 | * Fixed a memory leak in `FrameToolController`. 1706 | * Fixed a scaling issue for backdrop images. 1707 | * Fixed the Podspec so that the resource bundle is not added twice to projects that use CocoaPods to integrate the SDK. 1708 | 1709 | ## [6.1.2] 1710 | 1711 | ### Added 1712 | 1713 | * A new API to integrate the SDK into your analytics. See `AnalyticsClient` and `PESDK.shared.analytics` for more details. 1714 | * Added an option to set a backdrop image (`backdropImage`), a blend mode (`backdropBlendMode`) and an intensity (`backdropIntensity`) for it to `PhotoEditModel`. 1715 | 1716 | ## [6.1.1] 1717 | 1718 | ### Fixed 1719 | 1720 | * Fixed a bug regarding image orientation that occurred when saving an unedited image. The image that was passed to `PhotoEditViewController` is now passed back to the delegate untouched when saving and image without any modifications. 1721 | 1722 | ## [6.1.0] 1723 | 1724 | ### Added 1725 | 1726 | * Dynamic frames, which are generated during runtime and adjust to the image based on a given set of rules, similar to 9-patch images. See `CustomPatchFrameBuilder` for more information. 1727 | 1728 | ### Changed 1729 | 1730 | * Frames participate in the bring-to-front behavior so that stickers, text and brush can be moved behind or in front of frames. 1731 | * Licensing has been improved to support multiple bundle identifiers within one license. 1732 | 1733 | ## [6.0.1] 1734 | 1735 | ### Added 1736 | 1737 | * Licensing 1738 | 1739 | ## [6.0.0] 1740 | 1741 | ### Added 1742 | 1743 | * Stickers can be grouped into individual categories and their color can be changed by the user. 1744 | * New initializers for `PhotoEditViewController`: `init(data: Data)`, `init(data: Data, configuration: Configuration)` and `init(data: Data, menuItems: [MenuItem], configuration: Configuration)` which allow passing an image as data in which case EXIF information can be preserved. 1745 | * `PhotoEditModel` is a Swift `struct` now. When using Objective-C you can use `IMGLYBoxedPhotoEditModel` instead where needed. 1746 | 1747 | ### Changed 1748 | 1749 | * The crop UI has been completely revised and supports arbitrary rotations now. 1750 | * Updated the UI of the focus tool so that the user can change the width of the focus gradient. 1751 | * Updated the overall look and feel of the UI. 1752 | * Custom fonts can be added to the SDK. 1753 | * Many performance improvements. 1754 | * Asset datasources support remote sources out of the box now. 1755 | --------------------------------------------------------------------------------