Revision: 4653
http://skim-app.svn.sourceforge.net/skim-app/?rev=4653&view=rev
Author: hofman
Date: 2008-09-18 12:19:02 +0000 (Thu, 18 Sep 2008)
Log Message:
-----------
convenience methods to convert between data and points and rects for scripting.
Modified Paths:
--------------
trunk/NSData_SKExtensions.h
trunk/NSData_SKExtensions.m
trunk/PDFAnnotationLine_SKExtensions.m
trunk/PDFAnnotation_SKExtensions.m
trunk/PDFPage_SKExtensions.m
Modified: trunk/NSData_SKExtensions.h
===================================================================
--- trunk/NSData_SKExtensions.h 2008-09-17 14:47:32 UTC (rev 4652)
+++ trunk/NSData_SKExtensions.h 2008-09-18 12:19:02 UTC (rev 4653)
@@ -47,4 +47,10 @@
- (NSString *)xmlString;
++ (NSData *)dataWithPointAsQDPoint:(NSPoint)point;
++ (NSData *)dataWithRectAsQDRect:(NSRect)rect;
+
+- (NSPoint)pointValueAsQDPoint;
+- (NSRect)rectValueAsQDRect;
+
@end
Modified: trunk/NSData_SKExtensions.m
===================================================================
--- trunk/NSData_SKExtensions.m 2008-09-17 14:47:32 UTC (rev 4652)
+++ trunk/NSData_SKExtensions.m 2008-09-18 12:19:02 UTC (rev 4653)
@@ -37,6 +37,7 @@
*/
#import "NSData_SKExtensions.h"
+#import "NSGeometry_SKExtensions.h"
@implementation NSData (SKExtensions)
@@ -114,4 +115,34 @@
return string;
}
+#pragma mark Scripting support
+
++ (NSData *)dataWithPointAsQDPoint:(NSPoint)point {
+ Point qdPoint = SKQDPointFromNSPoint(point);
+ return [self dataWithBytes:&qdPoint length:sizeof(Point)];
+}
+
++ (NSData *)dataWithRectAsQDRect:(NSRect)rect {
+ Rect qdBounds = SKQDRectFromNSRect(rect);
+ return [self dataWithBytes:&qdBounds length:sizeof(Rect)];
+}
+
+- (NSPoint)pointValueAsQDPoint {
+ NSPoint point = NSZeroPoint;
+ if ([self length] == sizeof(Point)) {
+ const Point *qdPoint = (const Point *)[self bytes];
+ point = SKNSPointFromQDPoint(*qdPoint);
+ }
+ return point;
+}
+
+- (NSRect)rectValueAsQDRect {
+ NSRect rect = NSZeroRect;
+ if ([self length] == sizeof(Rect)) {
+ const Rect *qdRect = (const Rect *)[self bytes];
+ rect = SKNSRectFromQDRect(*qdRect);
+ }
+ return rect;
+}
+
@end
Modified: trunk/PDFAnnotationLine_SKExtensions.m
===================================================================
--- trunk/PDFAnnotationLine_SKExtensions.m 2008-09-17 14:47:32 UTC (rev
4652)
+++ trunk/PDFAnnotationLine_SKExtensions.m 2008-09-18 12:19:02 UTC (rev
4653)
@@ -44,6 +44,7 @@
#import "SKFDFParser.h"
#import "NSUserDefaults_SKExtensions.h"
#import "NSGeometry_SKExtensions.h"
+#import "NSData_SKExtensions.h"
FourCharCode SKScriptingLineStyleFromLineStyle(PDFLineStyle lineStyle) {
@@ -161,9 +162,8 @@
}
- (void)setStartPointAsQDPoint:(NSData *)inQDPointAsData {
- if ([inQDPointAsData length] == sizeof(Point)) {
- const Point *qdPoint = (const Point *)[inQDPointAsData bytes];
- NSPoint startPoint = SKNSPointFromQDPoint(*qdPoint);
+ if (inQDPointAsData && [inQDPointAsData isEqual:[NSNull null]] == NO) {
+ NSPoint startPoint = [inQDPointAsData pointValueAsQDPoint];
NSRect bounds = [self bounds];
NSPoint endPoint = SKIntegralPoint(SKAddPoints([self endPoint],
bounds.origin));
@@ -194,14 +194,12 @@
NSPoint startPoint = SKAddPoints([self startPoint], bounds.origin);
startPoint.x = floorf(startPoint.x);
startPoint.y = floorf(startPoint.y);
- Point qdPoint = SKQDPointFromNSPoint(startPoint);
- return [NSData dataWithBytes:&qdPoint length:sizeof(Point)];
+ return [NSData dataWithPointAsQDPoint:startPoint];
}
- (void)setEndPointAsQDPoint:(NSData *)inQDPointAsData {
- if ([inQDPointAsData length] == sizeof(Point)) {
- const Point *qdPoint = (const Point *)[inQDPointAsData bytes];
- NSPoint endPoint = SKNSPointFromQDPoint(*qdPoint);
+ if (inQDPointAsData && [inQDPointAsData isEqual:[NSNull null]] == NO) {
+ NSPoint endPoint = [inQDPointAsData pointValueAsQDPoint];
NSRect bounds = [self bounds];
NSPoint startPoint = SKIntegralPoint(SKAddPoints([self startPoint],
bounds.origin));
@@ -232,8 +230,7 @@
NSPoint endPoint = SKAddPoints([self endPoint], bounds.origin);
endPoint.x = floorf(endPoint.x);
endPoint.y = floorf(endPoint.y);
- Point qdPoint = SKQDPointFromNSPoint(endPoint);
- return [NSData dataWithBytes:&qdPoint length:sizeof(Point)];
+ return [NSData dataWithPointAsQDPoint:endPoint];
}
- (FourCharCode)scriptingStartLineStyle {
Modified: trunk/PDFAnnotation_SKExtensions.m
===================================================================
--- trunk/PDFAnnotation_SKExtensions.m 2008-09-17 14:47:32 UTC (rev 4652)
+++ trunk/PDFAnnotation_SKExtensions.m 2008-09-18 12:19:02 UTC (rev 4653)
@@ -53,6 +53,7 @@
#import "PDFSelection_SKExtensions.h"
#import "SKPDFView.h"
#import "NSGeometry_SKExtensions.h"
+#import "NSData_SKExtensions.h"
#import "NSString_SKExtensions.h"
@@ -367,9 +368,8 @@
}
- (void)setBoundsAsQDRect:(NSData *)inQDBoundsAsData {
- if ([inQDBoundsAsData length] == sizeof(Rect) && [self isMovable]) {
- const Rect *qdBounds = (const Rect *)[inQDBoundsAsData bytes];
- NSRect newBounds = SKNSRectFromQDRect(*qdBounds);
+ if ([self isMovable]) {
+ NSRect newBounds = [inQDBoundsAsData rectValueAsQDRect];
if ([self isResizable] == NO) {
newBounds.size = [self bounds].size;
} else {
@@ -384,8 +384,7 @@
}
- (NSData *)boundsAsQDRect {
- Rect qdBounds = SKQDRectFromNSRect([self bounds]);
- return [NSData dataWithBytes:&qdBounds length:sizeof(Rect)];
+ return [NSData dataWithRectAsQDRect:[self bounds]];
}
- (NSString *)fontName {
Modified: trunk/PDFPage_SKExtensions.m
===================================================================
--- trunk/PDFPage_SKExtensions.m 2008-09-17 14:47:32 UTC (rev 4652)
+++ trunk/PDFPage_SKExtensions.m 2008-09-18 12:19:02 UTC (rev 4653)
@@ -47,6 +47,7 @@
#import "SKStringConstants.h"
#import "NSCharacterSet_SKExtensions.h"
#import "NSGeometry_SKExtensions.h"
+#import "NSData_SKExtensions.h"
#import "SKCFCallBacks.h"
#import "NSUserDefaults_SKExtensions.h"
#import "SKMainWindowController.h"
@@ -396,20 +397,18 @@
}
- (NSData *)boundsAsQDRect {
- Rect qdBounds = SKQDRectFromNSRect([self
boundsForBox:kPDFDisplayBoxCropBox]);
- return [NSData dataWithBytes:&qdBounds length:sizeof(Rect)];
+ return [NSData dataWithRectAsQDRect:[self
boundsForBox:kPDFDisplayBoxCropBox]];
}
- (void)setBoundsAsQDRect:(NSData *)inQDBoundsAsData {
- if ([inQDBoundsAsData length] == sizeof(Rect)) {
+ if (inQDBoundsAsData && [inQDBoundsAsData isEqual:[NSNull null]] == NO) {
NSUndoManager *undoManager = [[self containingDocument] undoManager];
[[undoManager prepareWithInvocationTarget:self]
setBoundsAsQDRect:[self boundsAsQDRect]];
[undoManager setActionName:NSLocalizedString(@"Crop Page", @"Undo
action name")];
// this will dirty the document, even though no saveable change has
been made
// but we cannot undo the document change count because there may be
real changes to the document in the script
- const Rect *qdBounds = (const Rect *)[inQDBoundsAsData bytes];
- NSRect newBounds = SKNSRectFromQDRect(*qdBounds);
+ NSRect newBounds = [inQDBoundsAsData rectValueAsQDRect];
if (NSWidth(newBounds) < 0.0)
newBounds.size.width = 0.0;
if (NSHeight(newBounds) < 0.0)
@@ -422,20 +421,18 @@
}
- (NSData *)mediaBoundsAsQDRect {
- Rect qdBounds = SKQDRectFromNSRect([self
boundsForBox:kPDFDisplayBoxMediaBox]);
- return [NSData dataWithBytes:&qdBounds length:sizeof(Rect)];
+ return [NSData dataWithRectAsQDRect:[self
boundsForBox:kPDFDisplayBoxMediaBox]];
}
- (void)setMediaBoundsAsQDRect:(NSData *)inQDBoundsAsData {
- if ([inQDBoundsAsData length] == sizeof(Rect)) {
+ if (inQDBoundsAsData && [inQDBoundsAsData isEqual:[NSNull null]] == NO) {
NSUndoManager *undoManager = [[self containingDocument] undoManager];
[[undoManager prepareWithInvocationTarget:self]
setMediaBoundsAsQDRect:[self mediaBoundsAsQDRect]];
[undoManager setActionName:NSLocalizedString(@"Crop Page", @"Undo
action name")];
// this will dirty the document, even though no saveable change has
been made
// but we cannot undo the document change count because there may be
real changes to the document in the script
- const Rect *qdBounds = (const Rect *)[inQDBoundsAsData bytes];
- NSRect newBounds = SKNSRectFromQDRect(*qdBounds);
+ NSRect newBounds = [inQDBoundsAsData rectValueAsQDRect];
if (NSWidth(newBounds) < 0.0)
newBounds.size.width = 0.0;
if (NSHeight(newBounds) < 0.0)
@@ -448,8 +445,7 @@
}
- (NSData *)contentBoundsAsQDRect {
- Rect qdBounds = SKQDRectFromNSRect([self foregroundBox]);
- return [NSData dataWithBytes:&qdBounds length:sizeof(Rect)];
+ return [NSData dataWithRectAsQDRect:[self foregroundBox]];
}
- (id)richText {
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit