diff options
| author | Nakidai <nakidai@disroot.org> | 2024-09-22 16:22:12 +0300 |
|---|---|---|
| committer | Nakidai <nakidai@disroot.org> | 2024-09-22 16:22:12 +0300 |
| commit | 2d561ed4bb78f1e9e7223396426720cf50432d1c (patch) | |
| tree | 69468fdfa0384da12b49c8e254768d1f0b60c432 | |
| parent | ff245c649700b7801d3e3fe602e5985e71c09896 (diff) | |
| download | cpetpet-2d561ed4bb78f1e9e7223396426720cf50432d1c.tar.gz cpetpet-2d561ed4bb78f1e9e7223396426720cf50432d1c.zip | |
Make CPetPet thread-safe
Well, making array of pretty identical strings is not good idea, but I think that array would be better than passing buffers through arguments, and also size of the array is not so critical.
| -rw-r--r-- | cpetpet.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/cpetpet.c b/cpetpet.c index 5ed1cdf..fe6234b 100644 --- a/cpetpet.c +++ b/cpetpet.c @@ -11,11 +11,23 @@ #include "config.h" +static char *gifs[] = { + SHAREDIR "/pet0.gif", + SHAREDIR "/pet1.gif", + SHAREDIR "/pet2.gif", + SHAREDIR "/pet3.gif", + SHAREDIR "/pet4.gif", + SHAREDIR "/pet5.gif", + SHAREDIR "/pet6.gif", + SHAREDIR "/pet7.gif", + SHAREDIR "/pet8.gif", + SHAREDIR "/pet9.gif", +}; + void CPetPet(const char *in, const char *out, const size_t delay) { MagickWand *result, *concat, *hand, *avatar, *edited; PixelWand *empty; - char filenamebuf[128]; double squeeze; double width, height; double offset_x, offset_y; @@ -44,14 +56,13 @@ void CPetPet(const char *in, const char *out, const size_t delay) height = 0.8 - squeeze * 0.05; offset_x = (1 - width) * 0.5 + 0.1; offset_y = (1 - height) - 0.08; - snprintf(filenamebuf, sizeof(filenamebuf), SHAREDIR "/pet%d.gif", i); edited = CloneMagickWand(avatar); MagickNewImage(concat, MagickGetImageWidth(avatar), MagickGetImageHeight(avatar), empty); MagickSetImageDispose(concat, BackgroundDispose); MagickSetImageDelay(concat, delay); MagickResizeImage(edited, (double)MagickGetImageWidth(avatar)*width, (double)MagickGetImageHeight(avatar)*height, Lanczos2Filter); - MagickReadImage(hand, filenamebuf); + MagickReadImage(hand, gifs[i]); MagickCompositeImage(concat, edited, OverCompositeOp, MagickTrue, MagickGetImageWidth(concat)*offset_x, MagickGetImageHeight(concat)*offset_y); MagickCompositeImage(concat, hand, OverCompositeOp, MagickTrue, 0, 0); |