Post

Replies

Boosts

Views

Activity

Reply to Why are CATiledLayers drawing on a single thread in 10.14 and 10.15?
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.
Topic: Media Technologies SubTopic: Audio Tags:
Feb ’21
Reply to How do I implement NSAttributedStringValueTransformer for attributed strings stored in Core Data
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
Topic: App & System Services SubTopic: General Tags:
Apr ’21
Reply to Granting full-disk access to my sandboxed app not working
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.XXX': Operation not permitted" Is there some way for the app too retain the directory permissions so that future file reads at permitted. Thanks
Topic: App & System Services SubTopic: Core OS Tags:
Apr ’21
Reply to What is the correct way to get a RAW files image size
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.
Topic: Media Technologies SubTopic: General Tags:
May ’21
Reply to Help debugging Thread 1: EXC_BAD_ACCESS (code=1, address=0x28) crash
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 ?
Topic: UI Frameworks SubTopic: SwiftUI Tags:
May ’21
Reply to How can I get CALayer to render sublayers correctly when generating PDF ?
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()             }         }     } }
Topic: Graphics & Games SubTopic: General Tags:
May ’21
Reply to macOS multiple document app, multiple CoreData stores
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)         }     }
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Dec ’21
Reply to Apps directory not appearing in iCloud Drive in Finder
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.
Dec ’21
Reply to Create PDF file with Spot Colors
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.
Dec ’23