Neste CGBitmapContextCreate, por que bytesPerRow é 0?
Notei no código de exemplo da Apple que eles geralmente fornecem um valor 0 no parâmetro bytesPerRow de CGBitmapContextCreate. Por exemplo, isso sai doReflexã projeto de amostra.
CGContextRef gradientBitmapContext = CGBitmapContextCreate(NULL, pixelsWide, pixelsHigh,
8, 0, colorSpace, kCGImageAlphaNone);
Isso me pareceu estranho, já que sempre segui a rota de multiplicar a largura da imagem pelo número de bytes por pixel. Tentei trocar o zero pelo meu próprio código e testei-o. Com certeza, ainda funciona.
size_t bitsPerComponent = 8;
size_t bytesPerPixel = 4;
size_t bytesPerRow = reflectionWidth * bytesPerPixel;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL,
reflectionWidth,
reflectionHeight,
bitsPerComponent,
0, // bytesPerRow ??
colorSpace,
kCGImageAlphaPremultipliedLast);
De acordo com os documentos, bytesPerRow deve ser "O número de bytes de memória a serem usados por linha do bitmap"
Então, qual é o negócio? Quando posso fornecer um zero e quando devo calcular o valor exato? Há implicações no desempenho de fazê-lo de uma maneira ou de outra?