From c2f382aba86aaebb9806ff1b43c1af69992e9a10 Mon Sep 17 00:00:00 2001 From: Evgeny Zinoviev Date: Mon, 11 Jul 2022 15:01:02 +0300 Subject: support dark mode for images with alpha channel --- lib/markup.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'lib/markup.php') diff --git a/lib/markup.php b/lib/markup.php index 52ccf24..2f25c6c 100644 --- a/lib/markup.php +++ b/lib/markup.php @@ -16,12 +16,15 @@ class markup { return $text; } - public static function htmlRetinaFix(string $html): string { + public static function htmlImagesFix(string $html, bool $is_retina, string $user_theme): string { global $config; + $is_dark_theme = $user_theme === 'dark'; return preg_replace_callback( - '/('.preg_quote($config['uploads_host'], '/').'\/\w{8}\/p)(\d+)x(\d+)(\.jpg)/', - function($match) { - return $match[1].(intval($match[2])*2).'x'.(intval($match[3])*2).$match[4]; + '/('.preg_quote($config['uploads_host'], '/').'\/\w{8}\/)([ap])(\d+)x(\d+)(\.jpg)/', + function($match) use ($is_retina, $is_dark_theme) { + $mult = $is_retina ? 2 : 1; + $is_alpha = $match[2] == 'a'; + return $match[1].$match[2].(intval($match[3])*$mult).'x'.(intval($match[4])*$mult).($is_alpha && $is_dark_theme ? '_dark' : '').$match[5]; }, $html ); -- cgit v1.2.3