Posts

Post not yet marked as solved
1 Replies
Further investigation seems to indicate that the Apple Core Graphics API does not natively support the Separation color space (as defined by Adobe) but it does support DeviceN color spaces - or Color Models. DeviceN color spaces support Spot colors so this seems like an option for us to use. However it is still unclear how one would create such a DeviceN color space. [% Define the color space to be DeviceN /DeviceN [/Ruby /Emerald /Sapphire /Turquoise /Amethyst /Citrine] /DeviceRGB {%define new values and clip to 1.0 6 -1 roll 1 index add 2 index add 6 -1 roll 2 index add 4 index add 6 3 roll add add 4 -1 roll pop 3 -1 roll dup 1 gt {pop 1} if 3 -1 roll dup 1 gt {pop 1} if 3 -1 roll dup 1 gt {pop 1} if } ] setcolorspace I did find this pseudo code for C# which seems to shed some light on it. > Spot color can be represented in PDF using 'Separation' or 'DeviceN' > color spaces. > > A separation color space can be treated similarly to grayscale color > space. For details on separation color space, please refer to section > 4.5.5 'Special Color Spaces' in PDF Reference Manual > (http://www.pdftron.com/downloads/PDFReference16.pdf). > > The following C# pseudocode can be used to create a separation color > space based on a PostScript function: > > static ColorSpace CreateSpotColorSpace(PDFDoc doc) > { > Obj sep_cs = doc.CreateIndirectArray(); > > sep_cs.PushBackName("Separation"); > sep_cs.PushBackName("LogoGreen"); // The name of the colorant > sep_cs.PushBackName("DeviceCMYK"); // Alternate color space > > // Create tint function (using PostScript calculator function). > // Tint function is used to transform a tint value into color > // component values in the alternate color space. > string ps_funct = "{ dup 0.84 mul exch 0.00 exch dup 0.44 mul exch > 0.21 mul }"; > Obj tint_funct = doc.CreateIndirectStream(new > System.Text.UTF8Encoding().GetBytes(ps_funct)); > tint_funct.PutNumber("FunctionType", 4); > > Obj tint_domain = tint_funct.PutArray("Domain"); > tint_domain.PushBackNumber(0); // Gray > tint_domain.PushBackNumber(1); > > Obj tint_range = tint_funct.PutArray("Range"); > tint_range.PushBackNumber(0); // C > tint_range.PushBackNumber(1); > tint_range.PushBackNumber(0); // M > tint_range.PushBackNumber(1); > tint_range.PushBackNumber(0); // Y > tint_range.PushBackNumber(1); > tint_range.PushBackNumber(0); // K > tint_range.PushBackNumber(1); > > sep_cs.PushBack(tint_funct); > return new ColorSpace(sep_cs); > > } So how would one define such a DeviceN color space using the Core Graphics API ? I am assuming that one should be able to define this using a CFPropertyList and then use the CGColorSpace(propertyListPlist: CFPropertyList) API to do so. Any help would be appreciated.
Post not yet marked as solved
20 Replies
Yes I am not seeing any incremental builds with 13.2, always seems to do full recompiles now. I don't think 13.1 was this bad! What a nuisance.
Post not yet marked as solved
11 Replies
Here is a tip - and I struggled forever. create app iCloud containers something like this com.company.app.dev01 com.company.app.dev02 com.company.app.devxx com.company.app.prod If you create the container with the wrong settings than it seems that is it ! You can't get it to show up no matter what you do except create a new one, hence the naming conventions above. Be sure to set the access as Public in info.plist BEFORE you run the app the first time !! Also make sure all the identifiers match up in the app entitlements and on the target Signing & Capabilities page and in the apps info.plist.
Post not yet marked as solved
5 Replies
You want a File Wrapper - see article linked https://www.swiftdevjournal.com/using-file-wrappers-in-a-swiftui-app/
Post marked as solved
5 Replies
I see, yes I am familiar with the Core Data API to set the filename and path but I can't see any way to use that in conjunction with DocumentGroup and/or FileDocument/ReferenceFileDocument such that you can create/open the sqlite files in iCloud Drive or in the local app sandbox.
Post marked as solved
5 Replies
Not sure I understand how this works. DocumentGroup provides the ability to browse/create/select a file but how do you create a new core data file or save one where there have been edits made. I don't see how you set the path to the actual file that is created/selected in DocumentGroup. Perhaps I am misunderstanding something but don't you need to create the sqlite or binary core data file at the URL obtained/created by DocumentGroup ? Otherwise doesn't NSPersistentContainer just store the core data files in the apps default location. I am assuming use of DocumentGroup means you can create the core data file on anywhere on iCloud Drive. var body: some Scene {         DocumentGroup(newDocument: { Document() }) { config in             ContentView()             // injecting persistent controller into the document view                 .environment(\.managedObjectContext, config.document.persistenceController.container                                 .viewContext)         }     }
Post marked as solved
5 Replies
Hi, did you ever manage to get this to work ? If so could you provide more details on how you link the core data file to the ReferenceFileDocument. What do you do about the following ReferenceFileDocument protocol functions: typealias SnapShot func snapshot(...) func fileWrapper(snapshot:...)
Post not yet marked as solved
2 Replies
Here is a sample app that illustrates the problem. For some reason the editor complains about the URL below so please remove the space after the https to download the test app https ://duncangroenewald.com/files/SampleApps/CALAyerRendering.zip
Post not yet marked as solved
2 Replies
This is what I ended up doing - should this really be necessary ? class ZOrderDrawingLayer: CALayer {     override func render(in ctx: CGContext) {         if let layers:[CALayer] = self.sublayers {             let orderedLayers = layers.sorted(by: {                 $0.zPosition $1.zPosition             })             for v in orderedLayers {                 ctx.saveGState()                 let w = v.bounds.width/2                 let ww = w*w                 let h = v.bounds.height/2                 let hh = h*h                 let c = sqrt(ww + hh)                 let theta = asin(h/c)                   let angle = atan2(v.transform.m12, v.transform.m11)                 let x = c * cos(theta+angle)                 let y = c * sin(theta+angle)                 ctx.translateBy(x: v.position.x-x, y: v.position.y-y)                 ctx.rotate(by: angle)                 v.render(in: ctx)                 ctx.restoreGState()             }         }     } }
Post not yet marked as solved
2 Replies
With a bit more fiddling around I get this [error] precondition failure: invalid attribute id: 2189977 AttributeGraph precondition failure: invalid attribute id: 2189977. And finding similar errors elsewhere I remembered that I changed a NavigationView to a HSplitView (?) which seems to behave the same . After reverting to NavigationView this crash goes away ! Is this a bug? and should I raise a bug with Apple for this ?
Post not yet marked as solved
1 Replies
It seems that the RAW file contains the native camera image size (sensor size) and the thumbnail contains and image that is set to the aspect ration setting that was used on the camera. So when querying the RAW files thumbnail you get the thumbnail stored by the camera but when getting the CIImage using CIFilter you get the full image i.e. native camera sensor image size. There seems to be no RAW API to get the camera set aspect ratio but this data does seem to exist in the EXIF data XDimension and YDimension.
Post marked as solved
16 Replies
Hi Eskimo can you indicate whether it is possible for a Sandboxed macOS app to retain permission to files for future access. For example the user selects a folder initially and the app reads metadata from the files in the folder and keeps a database of the files. At some future point the user launches the app again and selects a database record and the app then loads that file. Currently in in subsequent file access for generating thumbnails we get the following error. error: Error Domain=NSPOSIXErrorDomain Code=1 "couldn't issue sandbox extension com.apple.app-sandbox.read for '/Volumes/Network_Drive/Documents/samples/XXXX.***': Operation not permitted" Is there some way for the app too retain the directory permissions so that future file reads at permitted. Thanks
Post not yet marked as solved
3 Replies
Thanks, I figured that it might be a bug and have submitted a report via FeedbackAssistant (#FB9079551) and raised a DTI where they told me you had responded here :-) Yes I have existing application with existing archives. Note that the attachments are PDF documents or images the user may have pasted in to the text view. Not sure whether it would be possible to convert the file attachments to data without loosing some file details but I suspect so. Anyway thanks for the great response. I don't think I have ever had a useful response from anyone from Apple on these forums before - great to see such good support these days. ***** (that's 5 stars!) Regards
Post not yet marked as solved
2 Replies
This might have nothing to do with your issue but we experienced the same problem with our background reporting threads where they suddenly took forever to run. We solved that by setting the thread or queue priority to be user interactive (or something like that). Sorry I don't have the details in front of me. I have no idea if you can do the same with the drawing threads for CATiledLayer - or whether this the issue but thought it was worth mentioning. Let us know if you find the solution.