Revision: 7391
          http://skim-app.svn.sourceforge.net/skim-app/?rev=7391&view=rev
Author:   hofman
Date:     2011-07-26 13:37:27 +0000 (Tue, 26 Jul 2011)

Log Message:
-----------
use pointer array to collect ranges from selection

Modified Paths:
--------------
    trunk/PDFSelection_SKExtensions.h
    trunk/PDFSelection_SKExtensions.m

Modified: trunk/PDFSelection_SKExtensions.h
===================================================================
--- trunk/PDFSelection_SKExtensions.h   2011-07-26 12:12:09 UTC (rev 7390)
+++ trunk/PDFSelection_SKExtensions.h   2011-07-26 13:37:27 UTC (rev 7391)
@@ -51,7 +51,6 @@
 
 - (NSUInteger)safeIndexOfFirstCharacterOnPage:(PDFPage *)page;
 - (NSUInteger)safeIndexOfLastCharacterOnPage:(PDFPage *)page;
-- (NSArray *)safeRangesOnPage:(PDFPage *)page;
 - (PDFPage *)safeFirstPage;
 - (PDFPage *)safeLastPage;
 

Modified: trunk/PDFSelection_SKExtensions.m
===================================================================
--- trunk/PDFSelection_SKExtensions.m   2011-07-26 12:12:09 UTC (rev 7390)
+++ trunk/PDFSelection_SKExtensions.m   2011-07-26 13:37:27 UTC (rev 7391)
@@ -161,12 +161,15 @@
     return NSNotFound;
 }
 
-- (NSArray *)safeRangesOnPage:(PDFPage *)page {
+- (NSPointerArray *)safeRangesOnPage:(PDFPage *)page {
     if ([self respondsToSelector:@selector(numberOfTextRangesOnPage:)] && 
[self respondsToSelector:@selector(rangeAtIndex:onPage:)]) {
         NSInteger i, iMax = [self numberOfTextRangesOnPage:page];
-        NSMutableArray *ranges = [NSMutableArray array];
-        for (i = 0; i < iMax; i++)
-            [ranges addObject:[NSValue valueWithRange:[self rangeAtIndex:i 
onPage:page]]];
+        NSPointerArray *ranges = [NSPointerArray rangePointerArray];
+        NSRange range;
+        for (i = 0; i < iMax; i++) {
+            range = [self rangeAtIndex:i onPage:page];
+            [ranges addPointer:&range];
+        }
         return ranges;
     } else if ([self respondsToSelector:@selector(indexOfCharactersOnPage:)]) {
         NSIndexSet *indexes = [self indexOfCharactersOnPage:page];
@@ -174,11 +177,11 @@
             NSUInteger idx = [indexes firstIndex];
             NSUInteger prevIdx = NSNotFound;
             NSRange range = NSMakeRange(NSNotFound, 0);
-            NSMutableArray *ranges = [NSMutableArray array];
+            NSPointerArray *ranges = [NSPointerArray rangePointerArray];
             while (idx != NSNotFound) {
                 if (prevIdx == NSNotFound || idx != prevIdx + 1) {
                     if (range.length)
-                        [ranges addObject:[NSValue valueWithRange:range]];
+                        [ranges addPointer:&range];
                     range = NSMakeRange(idx, 1);
                 } else {
                     range.length++;
@@ -187,14 +190,17 @@
                 idx = [indexes indexGreaterThanIndex:idx];
             }
             if (range.length)
-                [ranges addObject:[NSValue valueWithRange:range]];
+                [ranges addPointer:&range];
             return ranges;
         }
     } else if ([self respondsToSelector:@selector(numberOfRangesOnPage:)] && 
[self respondsToSelector:@selector(rangeAtIndex:onPage:)]) {
         NSInteger i, iMax = [self numberOfRangesOnPage:page];
-        NSMutableArray *ranges = [NSMutableArray array];
-        for (i = 0; i < iMax; i++)
-            [ranges addObject:[NSValue valueWithRange:[self rangeAtIndex:i 
onPage:page]]];
+        NSPointerArray *ranges = [NSPointerArray rangePointerArray];
+        NSRange range;
+        for (i = 0; i < iMax; i++) {
+            range = [self rangeAtIndex:i onPage:page];
+            [ranges addPointer:&range];
+        }
         return ranges;
     }
     return nil;
@@ -659,8 +665,10 @@
     NSMutableArray *ranges = [NSMutableArray array];
     for (PDFPage *page in [self pages]) {
         NSRange lastRange = NSMakeRange(0, 0);
-        for (NSValue *value in [self safeRangesOnPage:page]) {
-            NSRange range = [value rangeValue];
+        NSPointerArray *rangePointers = [self safeRangesOnPage:page];
+        NSUInteger i, iMax = [rangePointers count];
+        for (i = 0; i < iMax; i++) {
+            NSRange range = *(NSRange *)[rangePointers pointerAtIndex:i];
             if (range.length == 0) {
             } else if (lastRange.length == 0) {
                 lastRange = range;


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Magic Quadrant for Content-Aware Data Loss Prevention
Research study explores the data loss prevention market. Includes in-depth
analysis on the changes within the DLP market, and the criteria used to
evaluate the strengths and weaknesses of these DLP solutions.
http://www.accelacomm.com/jaw/sfnl/114/51385063/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to