Re: Drawing same text and graphics in different CGContextRef
Re: Drawing same text and graphics in different CGContextRef
- Subject: Re: Drawing same text and graphics in different CGContextRef
- From: JPH via Cocoa-dev <email@hidden>
- Date: Fri, 22 Sep 2023 18:44:31 +0200
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 <email@hidden> a écrit :
>
>
>
>> On Sep 22, 2023, at 11:12 AM, JPH via Cocoa-dev <email@hidden>
>> 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 (email@hidden)
>>
>> 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:
>>
>> This email sent to email@hidden
>
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden