Revision: 28728
http://sourceforge.net/p/bibdesk/svn/28728
Author: hofman
Date: 2024-02-12 00:04:07 +0000 (Mon, 12 Feb 2024)
Log Message:
-----------
Assign planar tiles buffers to c-arrays, make them strong. No need for array to
wrap them. Pass them as const pointers to functions to avoid ownership
qualifier warnings.
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-02-11 17:57:26 UTC (rev 28727)
+++ trunk/bibdesk_vendorsrc/amaxwell/FileView/FVCGImageUtilities.mm
2024-02-12 00:04:07 UTC (rev 28728)
@@ -334,7 +334,7 @@
#endif
-static vImage_Error __FVConvertIndexedImageRegionToPlanar8_buffers(CGImageRef
image, const uint8_t *srcBytes, const size_t rowBytes, const FVRegion& region,
const FVImageBuffer * __unsafe_unretained planarBuffers[4])
+static vImage_Error __FVConvertIndexedImageRegionToPlanar8_buffers(CGImageRef
image, const uint8_t *srcBytes, const size_t rowBytes, const FVRegion& region,
FVImageBuffer * const planarBuffers[4])
{
CGColorSpaceRef cspace = CGImageGetColorSpace(image);
const size_t tableElements = CGColorSpaceGetColorTableCount(cspace) *
CGColorSpaceGetNumberOfComponents(CGColorSpaceGetBaseColorSpace(cspace));
@@ -380,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, const FVImageBuffer * __unsafe_unretained
planarBuffers[4])
+static vImage_Error __FVConvertRGB888ImageRegionToPlanar8_buffers(CGImageRef
image, const uint8_t *srcBytes, const size_t rowBytes, const FVRegion& region,
FVImageBuffer *destBuffer, FVImageBuffer * const planarBuffers[4])
{
const size_t bytesPerSample = 3;
vImage_Buffer *dstBuffer = destBuffer->buffer;
@@ -442,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, const FVImageBuffer * __unsafe_unretained
planarBuffers[4])
+static vImage_Error __FVConvertARGB8888ImageRegionToPlanar8_buffers(CGImageRef
image, const uint8_t *srcBytes, const size_t rowBytes, const FVRegion& region,
FVImageBuffer *destBuffer, FVImageBuffer * const planarBuffers[4])
{
NSCParameterAssert(destBuffer);
const size_t bytesPerSample = 4;
@@ -620,7 +620,7 @@
}
-static vImage_Error __FVConvertPlanar8To8888Host(const FVImageBuffer *
__unsafe_unretained planarA[4], const vImage_Buffer *destBuffer)
+static vImage_Error __FVConvertPlanar8To8888Host(FVImageBuffer * const
planarA[4], const vImage_Buffer *destBuffer)
{
vImage_Error ret;
@@ -823,9 +823,6 @@
std::vector <FVRegion> regions = __FVTileRegionsForImage(image, scale);
- // fixed size mutable array to retain planarA and planarB buffers
- NS_VALID_UNTIL_END_OF_SCOPE NSMutableArray *planarTiles = [[NSMutableArray
alloc] initWithCapacity:8];
-
// first region is not necessarily the largest region anymore; figure out
the maximum height and width for tiles
size_t maxWidth = 0, maxHeight = 0;
std::vector<FVRegion>::iterator iter;
@@ -843,23 +840,30 @@
FVImageBuffer *imageBuffer;
size_t r = FVPaddedRowBytesForWidth(1, maxWidth);
NSUInteger i;
- for (i = 0; i < 8 && kvImageNoError == ret; i++) {
+
+ FVImageBuffer * planarA[4];
+ for (i = 0; i < 4 && kvImageNoError == ret; i++) {
imageBuffer = [[FVImageBuffer alloc] initWithWidth:maxWidth
height:maxHeight rowBytes:r];
if (imageBuffer) {
- [planarTiles addObject:imageBuffer];
+ planarA[i] = imageBuffer;
}
else {
ret = kvImageMemoryAllocationError;
}
}
+
+ FVImageBuffer * planarB[4];
+ for (i = 0; i < 4 && kvImageNoError == ret; i++) {
+ imageBuffer = [[FVImageBuffer alloc] initWithWidth:maxWidth
height:maxHeight rowBytes:r];
+ if (imageBuffer) {
+ planarB[i] = imageBuffer;
+ }
+ else {
+ ret = kvImageMemoryAllocationError;
+ }
+ }
imageBuffer = nil;
-
- const FVImageBuffer * __unsafe_unretained planarA[4];
- [planarTiles getObjects:planarA range:NSMakeRange(0, 4)];
- const FVImageBuffer * __unsafe_unretained planarB[4];
- [planarTiles getObjects:planarB range:NSMakeRange(4, 4)];
-
// keep track of the next scanline/byte offset in the final image
NSUInteger nextScanline = 0;
@@ -995,10 +999,6 @@
data = [interleavedImageBuffer copyBufferData];
}
- // cleanup is safe now
- // dispose of the tiles
- planarTiles = nil;
-
#if FV_LIMIT_TILEMEMORY_USAGE
__FVCGImageDiscardAllocationSize(0);
#endif
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