Re: NSImage From Client to Server
Re: NSImage From Client to Server
- Subject: Re: NSImage From Client to Server
- From: "Jordan Evans" <email@hidden>
- Date: Mon, 24 Jul 2006 06:31:25 -0700
I'm trying to get my client application to send a tiff to be
composited on the server application's NSView. Could someone help me
out?
Images don't serialize properly, as they appear to just contain a
reference to some resources in the WindowServer internally. Your best
bet is going to be to get a representation of the image in a NSData
object and send that instead.
That worked. Thank you.
You wouldn't happen to know how the protocols should be written in this code?
/* MyView */
#import <Cocoa/Cocoa.h>
@interface MyView : NSView
{
NSImage *myImage;
}
- (void)setImage:(NSData *)image;
@end
#import "MyView.h"
@implementation MyView
- (id)initWithFrame:(NSRect)frameRect
{
if ((self = [super initWithFrame:frameRect]) != nil)
{
}
return self;
}
- (void)setImage:(NSData *)image
{
myImage = [[NSImage alloc] initWithData:image];
[self setNeedsDisplay:YES];
}
- (void)drawRect:(NSRect)rect
{
NSRect bounds = [self bounds];
if(myImage)
{
NSRect imageRect;
NSRect drawingRect;
imageRect.origin = NSZeroPoint;
imageRect.size = [myImage size];
drawingRect = imageRect;
[myImage
drawInRect:drawingRect
fromRect:imageRect
operation:NSCompositeSourceOver
fraction:1.0
];
}
else
NSLog(@"Did not draw myImage.");
}
@end
/* Controller */
#import <Cocoa/Cocoa.h>
#import "MyView.h"
@interface Controller : NSObject
{
NSSocketPort *port;
NSConnection *connection;
IBOutlet NSView *myView;
}
- (void)setImage:(NSData *)image;
- (IBAction)vendService:(id)sender;
@end
#import "Controller.h"
@implementation Controller
- (void)setImage:(NSData *)image
{
[myView setImage:image];
}
- (IBAction)vendService:(id)sender
{
port = [[NSSocketPort alloc] initWithTCPPort:12345];
connection = [[NSConnection connectionWithReceivePort:port
sendPort:nil] retain];
[connection setRootObject:self];
if(![[NSSocketPortNameServer sharedInstance] registerPort:port
name:@"server"])
{
NSLog(@"Could not register name of server.");
}
}
@end
/* Controller */
#import <Cocoa/Cocoa.h>
@interface Controller : NSObject
{
IBOutlet NSTextField *messageField;
NSSocketPort *port;
NSConnection *connection;
NSDistantObject *proxy;
NSImage *anImage;
NSData *theData;
NSData *imageData;
}
- (IBAction)createProxy:(id)sender;
- (IBAction)sendImage:(id)sender;
@end
#import "Controller.h"
@implementation Controller
- (id)init
{
self = [super init];
if ( self )
{
imageData = [[NSData alloc]
initWithContentsOfFile:@"/users/mycomputer/desktop/snapshot.tiff"];
}
return self;
}
- (IBAction)createProxy:(id)sender
{
port = [[NSSocketPortNameServer sharedInstance] portForName:@"server"
host:@"*"];
connection = [NSConnection connectionWithReceivePort:nil sendPort:port];
proxy = [[connection rootProxy] retain];
}
- (IBAction)sendImage:(id)sender
{
if( ![proxy setImage:imageData] )
{
NSLog(@"Did not set send image.");
}
}
@end
_______________________________________________
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