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