Kaynağa Gözat

feat: Optimize ImageClearBackground and ImageDrawRectangleRec with doubling strategy (#5363)

pull/5365/head
Adi Čaušević 1 ay önce
işlemeyi yapan: GitHub
ebeveyn
işleme
e2233acdb0
Veri tabanında bu imza için bilinen anahtar bulunamadı GPG Anahtar Kimliği: B5690EEEBB952194
1 değiştirilmiş dosya ile 9 ekleme ve 5 silme
  1. +9
    -5
      src/rtextures.c

+ 9
- 5
src/rtextures.c Dosyayı Görüntüle

@ -3341,11 +3341,14 @@ void ImageClearBackground(Image *dst, Color color)
unsigned char *pSrcPixel = (unsigned char *)dst->data;
int bytesPerPixel = GetPixelDataSize(1, 1, dst->format);
int totalPixels = dst->width * dst->height;
// Repeat the first pixel data throughout the image
for (int i = 1; i < dst->width*dst->height; i++)
// Repeat the first pixel data throughout the image,
// doubling the pixels copied on each iteration
for (int i = 1; i < totalPixels; i *= 2)
{
memcpy(pSrcPixel + i*bytesPerPixel, pSrcPixel, bytesPerPixel);
int pixelsToCopy = MIN(i, totalPixels - i);
memcpy(pSrcPixel + i * bytesPerPixel, pSrcPixel, pixelsToCopy * bytesPerPixel);
}
}
@ -3724,9 +3727,10 @@ void ImageDrawRectangleRec(Image *dst, Rectangle rec, Color color)
unsigned char *pSrcPixel = (unsigned char *)dst->data + bytesOffset;
// Repeat the first pixel data throughout the row
for (int x = 1; x < (int)rec.width; x++)
for (int x = 1; x < (int)rec.width; x *= 2)
{
memcpy(pSrcPixel + x*bytesPerPixel, pSrcPixel, bytesPerPixel);
int pixelsToCopy = MIN(x, (int)rec.width - x);
memcpy(pSrcPixel + x*bytesPerPixel, pSrcPixel, pixelsToCopy * bytesPerPixel);
}
// Repeat the first row data for all other rows

Yükleniyor…
İptal
Kaydet