1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
//
// PRImageView.m
// PRICE
//
// Created by Riccardo Mottola on Thu Dec 12 2002.
// Copyright (c) 2002-2003 Carduus. All rights reserved.
//
// This program is free software; you can redistribute it and/or modify it under the terms of the version 2 of the GNU General Public License as published by the Free Software Foundation.
// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#import "PRImageView.h"
@implementation PRImageView
- (id)initWithFrame:(NSRect)frameRect
{
NSMutableArray *dragTypes;
NSView *r;
r = [super initWithFrame:frameRect];
/* init copy&paste */
dragTypes = [NSMutableArray arrayWithObjects:NSColorPboardType, NSFilenamesPboardType, nil];
[dragTypes addObjectsFromArray:[NSImage imagePasteboardTypes]];
[r registerForDraggedTypes:dragTypes];
return r;
}
- (void)drawRect:(NSRect)rect
{
if (![[NSGraphicsContext currentContext] isDrawingToScreen])
{
NSSize paperSize;
NSSize imageSize;
NSRect finalRect;
float scaleX, scaleY, scale;
NSAffineTransform *at;
imageSize = [[self image] size];
scaleX = rect.size.width / imageSize.width;
scaleY = rect.size.height / imageSize.height;
if (scaleX < scaleY)
scale = scaleX;
else
scale = scaleY;
NSLog(@"scale %f", scale);
finalRect = NSMakeRect(rect.origin.x, rect.origin.y, imageSize.width*scale, imageSize.height*scale);
[[self image] drawInRect:finalRect fromRect:NSMakeRect(0, 0, imageSize.width, imageSize.height) operation:(NSCompositingOperation)NSCompositeCopy fraction:(float)1.0];
} else
{
[super drawRect:rect];
}
}
- (void)scaleFrameBy:(float)scale
{
NSSize imageSize;
NSAffineTransform *at;
imageSize = [[self image] size];
at = [NSAffineTransform transform];
[at scaleBy:scale];
[self setFrameSize:[at transformSize:imageSize]];
[self setNeedsDisplay:YES];
}
- (BOOL) knowsPageRange: (NSRangePointer) range
{
range->location = 1;
range->length = 1;
return YES;
}
- (NSRect ) rectForPage: (int) pageNumber
{
NSPrintInfo *pi = [[[NSDocumentController sharedDocumentController] currentDocument] printInfo];
return [pi imageablePageBounds];
}
-(void) dealloc
{
[super dealloc];
NSLog(@"PRImageView dealloc");
}
@end
|