• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
NSCustomImageRep won't draw
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

NSCustomImageRep won't draw


  • Subject: NSCustomImageRep won't draw
  • From: Lindsey Spratt <email@hidden>
  • Date: Tue, 12 Apr 2005 18:30:36 -0400

I'm trying to use NSImageCustomRep to "capture" the drawing of an arbitrary graphic and then draw the resulting NSImage so that I can use compositing when displaying the graphic. This works well in the CompositeLab example project, but the "captured" image doesn't draw anything when I try it with my custom NSView, NSWindowController, and NSDocument (XGPGraphicView, XGPGraphicsWindowController, and XGPDrawDocument, respectively).

The initWithFrame:, drawCustom:, and drawRect: methods in XGPGraphicView are show below. The initWithFrame: method sets up the _source instance variable to hold the custom image. This image is defined using the drawCustom: call-back. The drawRect: method uses compositeToPoint:operation: method to cause the _source image to be rendered (in theory).

- (id)initWithFrame:(NSRect)frame {
self = [super initWithFrame:frame];
if (self) {
[NSColor setIgnoresAlpha:NO];
NSMutableArray *dragTypes = [NSMutableArray arrayWithObjects:NSColorPboardType, NSFilenamesPboardType, nil];
[dragTypes addObjectsFromArray:[NSImage imagePasteboardTypes]];
[self registerForDraggedTypes:dragTypes];
_controller = nil;
_selectedGraphics = [[NSMutableArray allocWithZone:[self zone]] init];
_creatingGraphic = nil;
_rubberbandRect = NSZeroRect;
_rubberbandGraphics = nil;
_gvFlags.rubberbandIsDeselecting = NO;
_gvFlags.initedRulers = NO;
_editingGraphic = nil;
_editorView = nil;
_pasteboardChangeCount = -1;
_pasteCascadeNumber = 0;
_pasteCascadeDelta = NSMakePoint(XGPDefaultPasteCascadeDelta, XGPDefaultPasteCascadeDelta);
_gvFlags.snapsToGrid = NO;
_gvFlags.showsGrid = NO;
_gvFlags.knobsHidden = NO;
_gridSpacing = 8.0;
_gridColor = [[NSColor lightGrayColor] retain];
_unhideKnobsTimer = nil;


{
NSRect sRect = NSMakeRect(0.0, 0.0, 100.0, 100.0);
_source = nil;


[(_source = [[NSImage allocWithZone:[self zone]] initWithSize:sRect.size]) addRepresentation:[[[NSCustomImageRep alloc] initWithDrawSelector:@selector(drawCustom:) delegate:self] autorelease]];
[_source setBackgroundColor:[NSColor clearColor]];
}
}
return self;
}

- (void)drawCustom:(NSCustomImageRep *)imageRep
{
NSRect sRect = NSMakeRect(0.0, 0.0, 100.0, 100.0);
NSBezierPath *path = [NSBezierPath bezierPath];


[path moveToPoint:NSMakePoint(0.0, 0.0)];
[path lineToPoint:NSMakePoint(0.0, sRect.size.height)];
[path lineToPoint:NSMakePoint(sRect.size.width, sRect.size.height)];
[path closePath];


[[NSColor redColor] set];
[path fill];
}

- (void)drawRect:(NSRect)rect
{
NSRect sRect = NSMakeRect(0.0, 0.0, 100.0, 100.0);

// Erase the whole view
[[NSColor whiteColor] set]; // set white as background color.
NSRectFill([self bounds]);

// Color for the frame of the image.
[[NSColor blackColor] set];

// Draw the source bitmap and then frame it with black
[_source compositeToPoint:sRect.origin operation:NSCompositeSourceOver];
NSFrameRect(sRect);
}

Attachment: PGP.sig
Description: This is a digitally signed message part

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Prev by Date: Pre-flighting save
  • Next by Date: Re: Right-click in NSTextView selects adjacent word?
  • Previous by thread: Pre-flighting save
  • Next by thread: Re: NSCustomImageRep won't draw
  • Index(es):
    • Date
    • Thread