Revision: 28639
          http://sourceforge.net/p/bibdesk/svn/28639
Author:   hofman
Date:     2024-01-21 18:17:26 +0000 (Sun, 21 Jan 2024)
Log Message:
-----------
pass c-array of buffers to functions, can declare type and size, don't need to 
get the objects again, and indicates their lack of ownership

Modified Paths:
--------------
    trunk/bibdesk_vendorsrc/amaxwell/FileView/FVCGImageUtilities.mm

Modified: trunk/bibdesk_vendorsrc/amaxwell/FileView/FVCGImageUtilities.mm
===================================================================
--- trunk/bibdesk_vendorsrc/amaxwell/FileView/FVCGImageUtilities.mm     
2024-01-21 18:02:20 UTC (rev 28638)
+++ trunk/bibdesk_vendorsrc/amaxwell/FileView/FVCGImageUtilities.mm     
2024-01-21 18:17:26 UTC (rev 28639)
@@ -334,7 +334,7 @@
 
 #endif
 
-static vImage_Error __FVConvertIndexedImageRegionToPlanar8_buffers(CGImageRef 
image, const uint8_t *srcBytes, const size_t rowBytes, const FVRegion& region, 
NSArray *buffers)
+static vImage_Error __FVConvertIndexedImageRegionToPlanar8_buffers(CGImageRef 
image, const uint8_t *srcBytes, const size_t rowBytes, const FVRegion& region, 
const __unsafe_unretained FVImageBuffer *planarBuffers[4])
 {
     CGColorSpaceRef cspace = CGImageGetColorSpace(image);
     const size_t tableElements = CGColorSpaceGetColorTableCount(cspace) * 
CGColorSpaceGetNumberOfComponents(CGColorSpaceGetBaseColorSpace(cspace));
@@ -345,11 +345,8 @@
     NSCParameterAssert(tableElements <= sizeof(table) / sizeof(unsigned char));
     CGColorSpaceGetColorTable(cspace, table);
     
-    __unsafe_unretained FVImageBuffer *planarBuffers[4];
-    [buffers getObjects:planarBuffers range:NSMakeRange(0, 4)];
-    
     // set sizes to avoid a mismatch; these are guaranteed to be large enough
-    for (NSUInteger i = 0; i < sizeof(planarBuffers) / sizeof(FVImageBuffer 
*); i++) {
+    for (NSUInteger i = 0; i < 4; i++) {
         NSCParameterAssert(planarBuffers[i]->buffer->rowBytes >= region.w);
         planarBuffers[i]->buffer->width = region.w;
         planarBuffers[i]->buffer->height = region.h;
@@ -383,7 +380,7 @@
 }
 
 // the image's byte pointer is passed in as a parameter in case we're copying 
from the data provider (which can be really slow)
-static vImage_Error __FVConvertRGB888ImageRegionToPlanar8_buffers(CGImageRef 
image, const uint8_t *srcBytes, const size_t rowBytes, const FVRegion& region, 
FVImageBuffer *destBuffer, NSArray *buffers)
+static vImage_Error __FVConvertRGB888ImageRegionToPlanar8_buffers(CGImageRef 
image, const uint8_t *srcBytes, const size_t rowBytes, const FVRegion& region, 
FVImageBuffer *destBuffer, const __unsafe_unretained FVImageBuffer 
*planarBuffers[4])
 {
     const size_t bytesPerSample = 3;
     vImage_Buffer *dstBuffer = destBuffer->buffer;
@@ -408,11 +405,9 @@
     }
     
     vImage_Error ret;    
-    __unsafe_unretained FVImageBuffer *planarBuffers[4];
-    [buffers getObjects:planarBuffers range:NSMakeRange(0, 4)];
     
     // set sizes to avoid a mismatch; these are guaranteed to be large enough
-    for (NSUInteger i = 0; i < sizeof(planarBuffers) / sizeof(FVImageBuffer 
*); i++) {
+    for (NSUInteger i = 0; i < 4; i++) {
         NSCParameterAssert(planarBuffers[i]->buffer->rowBytes >= region.w);
         planarBuffers[i]->buffer->width = region.w;
         planarBuffers[i]->buffer->height = region.h;
@@ -447,7 +442,7 @@
 }
 
 // the image's byte pointer is passed in as a parameter in case we're copying 
from the data provider (which can be really slow)
-static vImage_Error __FVConvertARGB8888ImageRegionToPlanar8_buffers(CGImageRef 
image, const uint8_t *srcBytes, const size_t rowBytes, const FVRegion& region, 
FVImageBuffer *destBuffer, NSArray *buffers)
+static vImage_Error __FVConvertARGB8888ImageRegionToPlanar8_buffers(CGImageRef 
image, const uint8_t *srcBytes, const size_t rowBytes, const FVRegion& region, 
FVImageBuffer *destBuffer, const __unsafe_unretained FVImageBuffer 
*planarBuffers[4])
 {
     NSCParameterAssert(destBuffer);
     const size_t bytesPerSample = 4;
@@ -473,11 +468,9 @@
     }
     
     vImage_Error ret;    
-    __unsafe_unretained FVImageBuffer *planarBuffers[4];
-    [buffers getObjects:planarBuffers range:NSMakeRange(0, 4)];
     
     // set sizes to avoid a mismatch; these are guaranteed to be large enough
-    for (NSUInteger i = 0; i < sizeof(planarBuffers) / sizeof(FVImageBuffer 
*); i++) {
+    for (NSUInteger i = 0; i < 4; i++) {
         NSCParameterAssert(planarBuffers[i]->buffer->rowBytes >= region.w);
         planarBuffers[i]->buffer->width = region.w;
         planarBuffers[i]->buffer->height = region.h;
@@ -627,13 +620,8 @@
 }
 
 
-static vImage_Error __FVConvertPlanar8To8888Host(NSArray *planarBuffers, const 
vImage_Buffer *destBuffer)
+static vImage_Error __FVConvertPlanar8To8888Host(const __unsafe_unretained 
FVImageBuffer *planarA[4], const vImage_Buffer *destBuffer)
 {
-    NSCParameterAssert([planarBuffers count] == 4);
-    
-    const __unsafe_unretained FVImageBuffer *planarA[4];
-    [planarBuffers getObjects:planarA range:NSMakeRange(0, 4)];
-    
     vImage_Error ret;
     
 #ifdef __LITTLE_ENDIAN__
@@ -936,11 +924,11 @@
         
         // deinterleave a region of the image, using regionBuffer for 
temporary memory
         if (isIndexedImage)
-           ret = __FVConvertIndexedImageRegionToPlanar8_buffers(image, 
srcBytes, imageBytesPerRow, region, planarTilesA);
+           ret = __FVConvertIndexedImageRegionToPlanar8_buffers(image, 
srcBytes, imageBytesPerRow, region, planarA);
         else if (kCGImageAlphaNone == alphaInfo)
-            ret = __FVConvertRGB888ImageRegionToPlanar8_buffers(image, 
srcBytes, imageBytesPerRow, region, regionBuffer, planarTilesA);
+            ret = __FVConvertRGB888ImageRegionToPlanar8_buffers(image, 
srcBytes, imageBytesPerRow, region, regionBuffer, planarA);
         else
-            ret = __FVConvertARGB8888ImageRegionToPlanar8_buffers(image, 
srcBytes, imageBytesPerRow, region, regionBuffer, planarTilesA);
+            ret = __FVConvertARGB8888ImageRegionToPlanar8_buffers(image, 
srcBytes, imageBytesPerRow, region, regionBuffer, planarA);
         
         // vImage does not use CGFloat; we use zero offset horizontally
         float offset = 0;
@@ -984,7 +972,7 @@
         // no need to reset rowBytes, as it should be sufficiently long and 
correctly padded
         imageBuffer->buffer->width = planarA[0]->buffer->width;
         imageBuffer->buffer->height = planarA[0]->buffer->height;
-        ret = __FVConvertPlanar8To8888Host(planarTilesA, imageBuffer->buffer);
+        ret = __FVConvertPlanar8To8888Host(planarA, imageBuffer->buffer);
         if (kvImageNoError != ret) FVLog(@"__FVConvertPlanar8To8888Host failed 
with error %ld", ret);        
         
         regionColumnIndex++;

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



_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to