Revision: 14442
http://sourceforge.net/p/skim-app/code/14442
Author: hofman
Date: 2024-08-31 16:56:26 +0000 (Sat, 31 Aug 2024)
Log Message:
-----------
Define a real point type in scripting support and define a point list as a list
of real points, use that for path list of an ink note
Modified Paths:
--------------
trunk/NSData_SKExtensions.h
trunk/NSData_SKExtensions.m
trunk/PDFAnnotationInk_SKExtensions.m
trunk/PDFAnnotationMarkup_SKExtensions.m
trunk/PDFPage_SKExtensions.m
trunk/Skim.sdef
Modified: trunk/NSData_SKExtensions.h
===================================================================
--- trunk/NSData_SKExtensions.h 2024-08-31 16:07:55 UTC (rev 14441)
+++ trunk/NSData_SKExtensions.h 2024-08-31 16:56:26 UTC (rev 14442)
@@ -62,9 +62,11 @@
+ (NSData *)dataWithPointAsQDPoint:(NSPoint)point;
+ (NSData *)dataWithRectAsQDRect:(NSRect)rect;
++ (NSData *)dataWithPointAsNSPoint:(NSPoint)point;
@property (nonatomic, readonly) NSPoint pointValueAsQDPoint;
@property (nonatomic, readonly) NSRect rectValueAsQDRect;
+@property (nonatomic, readonly) NSPoint pointValueAsNSPoint;
+ (instancetype)scriptingPdfWithDescriptor:(NSAppleEventDescriptor
*)descriptor;
@property (nonatomic, readonly) NSAppleEventDescriptor *scriptingPdfDescriptor;
@@ -72,6 +74,8 @@
@property (nonatomic, readonly) NSAppleEventDescriptor
*scriptingTiffPictureDescriptor;
+ (instancetype)scriptingRtfWithDescriptor:(NSAppleEventDescriptor
*)descriptor;
@property (nonatomic, readonly) NSAppleEventDescriptor *scriptingRtfDescriptor;
++ (instancetype)scriptingRealPointWithDescriptor:(NSAppleEventDescriptor
*)descriptor;
+@property (nonatomic, readonly) NSAppleEventDescriptor
*scriptingRealPointDescriptor;
@end
Modified: trunk/NSData_SKExtensions.m
===================================================================
--- trunk/NSData_SKExtensions.m 2024-08-31 16:07:55 UTC (rev 14441)
+++ trunk/NSData_SKExtensions.m 2024-08-31 16:56:26 UTC (rev 14442)
@@ -185,6 +185,10 @@
return [self dataWithBytes:&qdRect length:sizeof(Rect)];
}
++ (NSData *)dataWithPointAsNSPoint:(NSPoint)point {
+ return [self dataWithBytes:&point length:sizeof(NSPoint)];
+}
+
- (NSPoint)pointValueAsQDPoint {
NSPoint point = NSZeroPoint;
if ([self length] == sizeof(Point)) {
@@ -203,6 +207,15 @@
return rect;
}
+- (NSPoint)pointValueAsNSPoint {
+ NSPoint point = NSZeroPoint;
+ if ([self length] == sizeof(NSPoint)) {
+ const NSPoint *nsPoint = (const NSPoint *)[self bytes];
+ point = *nsPoint;
+ }
+ return point;
+}
+
+ (instancetype)scriptingPdfWithDescriptor:(NSAppleEventDescriptor
*)descriptor {
return [descriptor data];
}
@@ -227,4 +240,27 @@
return [NSAppleEventDescriptor descriptorWithDescriptorType:'RTF '
data:self];
}
++ (instancetype)scriptingRealPointWithDescriptor:(NSAppleEventDescriptor
*)descriptor {
+ NSPoint point = NSZeroPoint;
+ if ([descriptor descriptorType] == typeAEList) {
+ if ([descriptor numberOfItems] == 2) {
+ point.x = [[descriptor descriptorAtIndex:1] doubleValue];
+ point.y = [[descriptor descriptorAtIndex:2] doubleValue];
+ }
+ } else {
+ NSData *data = [descriptor data];
+ if ([data length] == sizeof(NSPoint) || [data length] == sizeof(Point))
+ return data;
+ }
+ return [NSData dataWithPointAsNSPoint:point];
+}
+
+- (NSAppleEventDescriptor *)scriptingRealPointDescriptor {
+ NSPoint point = [self pointValueAsNSPoint];
+ NSAppleEventDescriptor *descriptor = [NSAppleEventDescriptor
listDescriptor];
+ [descriptor insertDescriptor:[NSAppleEventDescriptor
descriptorWithDouble:point.x] atIndex:1];
+ [descriptor insertDescriptor:[NSAppleEventDescriptor
descriptorWithDouble:point.y] atIndex:2];
+ return descriptor;
+}
+
@end
Modified: trunk/PDFAnnotationInk_SKExtensions.m
===================================================================
--- trunk/PDFAnnotationInk_SKExtensions.m 2024-08-31 16:07:55 UTC (rev
14441)
+++ trunk/PDFAnnotationInk_SKExtensions.m 2024-08-31 16:56:26 UTC (rev
14442)
@@ -310,7 +310,7 @@
pointValues = [[NSMutableArray alloc] initWithCapacity:iMax];
for (i = 0; i < iMax; i++) {
point = [path associatedPointForElementAtIndex:i];
- [pointValues addObject:[NSData
dataWithPointAsQDPoint:SKAddPoints(point, origin)]];
+ [pointValues addObject:[NSData
dataWithPointAsNSPoint:SKAddPoints(point, origin)]];
}
[pointLists addObject:pointValues];
}
Modified: trunk/PDFAnnotationMarkup_SKExtensions.m
===================================================================
--- trunk/PDFAnnotationMarkup_SKExtensions.m 2024-08-31 16:07:55 UTC (rev
14441)
+++ trunk/PDFAnnotationMarkup_SKExtensions.m 2024-08-31 16:56:26 UTC (rev
14442)
@@ -341,7 +341,7 @@
pointValues = [[NSMutableArray alloc] initWithCapacity:iMax];
for (j = 0; j < 4; j++) {
point = [[[self quadrilateralPoints] objectAtIndex:4 * i + j]
pointValue];
- [pointValues addObject:[NSData
dataWithPointAsQDPoint:SKAddPoints(point, origin)]];
+ [pointValues addObject:[NSData
dataWithPointAsNSPoint:SKAddPoints(point, origin)]];
}
[pointLists addObject:pointValues];
}
Modified: trunk/PDFPage_SKExtensions.m
===================================================================
--- trunk/PDFPage_SKExtensions.m 2024-08-31 16:07:55 UTC (rev 14441)
+++ trunk/PDFPage_SKExtensions.m 2024-08-31 16:56:26 UTC (rev 14442)
@@ -732,12 +732,10 @@
for (id pt in list) {
NSPoint point;
if ([pt isKindOfClass:[NSData class]]) {
- point = [pt pointValueAsQDPoint];
+ point = [pt pointValueAsNSPoint];
} else if ([pt isKindOfClass:[NSArray class]] &&
[pt count] == 2) {
- Point qdPoint;
- qdPoint.v = [[pt objectAtIndex:0] intValue];
- qdPoint.h = [[pt objectAtIndex:1] intValue];
- point = SKNSPointFromQDPoint(qdPoint);
+ point.x = [[pt objectAtIndex:0] doubleValue];
+ point.y = [[pt objectAtIndex:1] doubleValue];
} else continue;
[PDFAnnotation addPoint:point
toSkimNotesPath:path];
}
Modified: trunk/Skim.sdef
===================================================================
--- trunk/Skim.sdef 2024-08-31 16:07:55 UTC (rev 14441)
+++ trunk/Skim.sdef 2024-08-31 16:56:26 UTC (rev 14442)
@@ -1121,7 +1121,7 @@
<class name="point list" plural="point lists" code="PtLi"
description="A list of points.">
<cocoa class="NSArray"/>
- <type type="point" list="yes"/>
+ <type type="real point" list="yes"/>
</class>
<class name="TeX line" plural="TeX lines" code="Line"
@@ -1258,6 +1258,10 @@
</property>
</record-type>
+ <value-type name="real point" code="NSpt">
+ <cocoa class="NSData"/>
+ </value-type>
+
<value-type name="PDF" code="PDF ">
<cocoa class="NSData"/>
</value-type>
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit