Hi David, Trying to understand the mechanism you suggest ( I am not familiar with the concept of context pushing - poping :(I )
NSGraphicsContext <apple-reference-documentation://hcmXlh9fv1> * newcontext= [NSGraphicsContex <apple-reference-documentation://hcmXlh9fv1> graphicsContextWithCGContext:theprintContext flipped:YES] // theprintContext obtained from PMSessionGetCGGraphicsContext(printSession, &theprintContext) [newcontext saveGraphicsState]; //Saves the current graphics state and creates a new graphics state on the top of the stack. myDrawMethod( newcontext.CGContext) [NSGraphicsContext <apple-reference-documentation://hcmXlh9fv1> restoreGraphicsState;] Is this correct ? All the best JP a graphic context created by myself ( hence not the supplied on by the printing framework ) > Le 22 sept. 2023 à 17:59, David Duncan <david.dun...@apple.com> a écrit : > > > >> On Sep 22, 2023, at 11:12 AM, JPH via Cocoa-dev <cocoa-dev@lists.apple.com> >> wrote: >> >> I am facing the following problems in drawing text and graphics in >> CGContextRef of an NSview and Printing framework: >> >> 1) drawing text using: [finalString drawInRect:textBox >> withAttributes:attributes]; >> Works nicely in my sub-classed NSViews in a CGContextRef obtained in the >> drawRect : method with CGContextRef viewCtx= [[NSGraphicsContext >> currentContext] CGContext]; >> But draws nothing in a print context obtained >> PMSessionGetCGGraphicsContext(printSession, &ctx); //( geometry is perfectly >> previewed,Pdf’ed and printed except texts .. ) >> >> 2) filling a bezier path with a pattern Color >> >> NSImage* nsPatImage= [[NSImage alloc] initWithCGImage:cgPatImage >> size:NSZeroSize]; >> NSColor* patternColor= [NSColor colorWithPatternImage:nsPatImage]; >> [patternColor setFill]; >> [bezierPath fill]; >> >> Works like a charm in the graphic context of NSView and print nothing in a >> print context. >> >> I suspect this has something to do with the notion of « Current context » , >> as the context in NSView is explicitly the « currentContext » >> But not sure if the printing context is the « current one » in the usual >> print sequence ; > > Correct. The current context is an AppKit concept, and you are working below > AppKit in this code sequence – so you need to ensure the context is made > current yourself. So you need to create an NSGraphicsContext, push it, and > pop it, around your drawing code that relies on the current context. Since > you pass the CGContext to myDrawMethod:, you could do this inside that method. > >> err= PMSessionBeginPageNoDialog(printSession, format ) >> ctx = PMSessionGetCGGraphicsContext(printSession, &ctx) >> [myDrawMethode: ctx] // [finalString drawInRect:textBox >> withAttributes:attributes]; draws nothing in the printing context >> PMSessionEndPageNoDialog(printSession); >> >> I would appreciate any advice or suggestion regarding these points >> King regards >> JP >> >> >> >> >> >> _______________________________________________ >> >> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) >> >> Please do not post admin requests or moderator comments to the list. >> Contact the moderators at cocoa-dev-admins(at)lists.apple.com >> >> Help/Unsubscribe/Update your Subscription: >> https://lists.apple.com/mailman/options/cocoa-dev/david.duncan%40apple.com >> >> This email sent to david.dun...@apple.com > _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com