From 1397f4f150b47869636df27060d7c5edd5fb9704 Mon Sep 17 00:00:00 2001 From: Oleg Korshul Date: Sun, 11 Jun 2023 00:44:33 +0300 Subject: [PATCH] Improve speed --- DesktopEditor/agg-2.4/include/agg_pixfmt_rgba.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/DesktopEditor/agg-2.4/include/agg_pixfmt_rgba.h b/DesktopEditor/agg-2.4/include/agg_pixfmt_rgba.h index 8d7643fb24..63b3f49bc5 100644 --- a/DesktopEditor/agg-2.4/include/agg_pixfmt_rgba.h +++ b/DesktopEditor/agg-2.4/include/agg_pixfmt_rgba.h @@ -194,6 +194,15 @@ namespace agg calc_type b = p[Order::B]; calc_type a = p[Order::A]; + if (a == base_mask) + { + p[Order::R] = (value_type)(((cr - r) * alpha + (r << base_shift)) >> base_shift); + p[Order::G] = (value_type)(((cg - g) * alpha + (g << base_shift)) >> base_shift); + p[Order::B] = (value_type)(((cb - b) * alpha + (b << base_shift)) >> base_shift); + p[Order::A] = (value_type)((alpha + a) - ((alpha * a + base_mask) >> base_shift)); + return; + } + p[Order::A] = (value_type)((alpha + a) - ((alpha * a + base_mask) >> base_shift)); p[Order::R] = (value_type)((alpha * cr + a * r - ((a * r * alpha + base_mask) >> base_shift)) / p[Order::A]); p[Order::G] = (value_type)((alpha * cg + a * r - ((a * g * alpha + base_mask) >> base_shift)) / p[Order::A]);