From 2d561ed4bb78f1e9e7223396426720cf50432d1c Mon Sep 17 00:00:00 2001 From: Nakidai Date: Sun, 22 Sep 2024 16:22:12 +0300 Subject: 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. --- cpetpet.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'cpetpet.c') 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); -- cgit 1.4.1