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

Reply via email to