# This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # graphics/aseprite # graphics/aseprite/Makefile # graphics/aseprite/distinfo # graphics/aseprite/pkg-descr # graphics/aseprite/pkg-plist # graphics/aseprite/files # graphics/aseprite/files/patch-src_app_resource__finder.cpp # graphics/aseprite/files/patch-src_app_util_freetype__utils.cpp # graphics/aseprite/files/patch-src_base_file__handle.cpp # graphics/aseprite/files/patch-src_doc_blend__internals.h # graphics/aseprite/files/pixman-combine32.h # echo c - graphics/aseprite mkdir -p graphics/aseprite > /dev/null 2>&1 echo x - graphics/aseprite/Makefile sed 's/^X//' >graphics/aseprite/Makefile << '4d72af54ffa0eb1af2418f582c15f129' X# Created by: Yuri Victorovich X# $FreeBSD$ X XPORTNAME= aseprite XPORTVERSION= 1.1.1 XDISTVERSIONPREFIX= v XCATEGORIES= graphics X XMAINTAINER= yuri@rawbw.com XCOMMENT= Animated sprite editor & pixel art tool X XLICENSE= GPLv2 XLICENSE_FILE= ${WRKSRC}/LICENSE.txt X XLIB_DEPENDS= libfreetype.so:${PORTSDIR}/print/freetype2 \ X liballeg.so:${PORTSDIR}/devel/allegro \ X libpng.so:${PORTSDIR}/graphics/png \ X libgif.so:${PORTSDIR}/graphics/giflib \ X libcurl.so:${PORTSDIR}/ftp/curl \ X libtinyxml.so:${PORTSDIR}/textproc/tinyxml X XOPTIONS_DEFINE= WEBP XOPTIONS_DEFAULT= WEBP X XWEBP_LIB_DEPENDS= libwebp.so:${PORTSDIR}/graphics/webp X XUSE_GITHUB= yes XGH_ACCOUNT= aseprite aseprite:flic aseprite:gtest aseprite:simpleini aseprite:duk XGH_PROJECT= aseprite flic:flic gtest:gtest simpleini:simpleini duktape:duk XGH_TAGNAME= b659747 da184cb:flic d63c625:gtest d4a436a:simpleini 90090c7:duk X XUSES= cmake:outsource compiler:c++11-lib jpeg pkgconfig XUSE_XORG= x11 xcursor xext xpm ice pixman sm xxf86dga xxf86vm X X.include X XCMAKE_ARGS+= -DUSE_SHARED_ALLEGRO4=1 XCMAKE_ARGS+= -DUSE_SHARED_GIFLIB=1 XCMAKE_ARGS+= -DUSE_SHARED_ZLIB=1 XCMAKE_ARGS+= -DUSE_SHARED_JPEGLIB=1 XCMAKE_ARGS+= -DUSE_SHARED_LIBPNG=1 X.if ${PORT_OPTIONS:MWEBP} XCMAKE_ARGS+= -DWITH_WEBP_SUPPORT=1 XCMAKE_ARGS+= -DUSE_SHARED_LIBWEBP=1 X.endif XCMAKE_ARGS+= -DUSE_SHARED_FREETYPE=1 XCMAKE_ARGS+= -DUSE_SHARED_PIXMAN=1 XCMAKE_ARGS+= -DUSE_SHARED_CURL=1 XCMAKE_ARGS+= -DUSE_SHARED_TINYXML=1 XCMAKE_ARGS+= -DFREETYPE_INCLUDE_DIR=${LOCALBASE}/include/freetype2 XCXXFLAGS+= -I${LOCALBASE}/include X Xpost-extract: X @${RMDIR} ${WRKSRC}/src/flic ${WRKSRC}/third_party/gtest ${WRKSRC}/third_party/simpleini ${WRKSRC}/third_party/duktape X @${MV} ${WRKDIR}/flic-* ${WRKSRC}/src/flic X @${MV} ${WRKDIR}/gtest-* ${WRKSRC}/third_party/gtest X @${MV} ${WRKDIR}/simpleini-* ${WRKSRC}/third_party/simpleini X @${MV} ${WRKDIR}/duktape-* ${WRKSRC}/third_party/duktape X @${MKDIR} ${WRKSRC}/third_party/pixman/pixman X Xpost-configure: X @${REINPLACE_CMD} -e 's|-lXxf86dga |-L${LOCALBASE}/lib -lXxf86dga |g' \ X `find ${WRKDIR} -name link.txt` X @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ X ${WRKSRC}/src/app/resource_finder.cpp X X.include 4d72af54ffa0eb1af2418f582c15f129 echo x - graphics/aseprite/distinfo sed 's/^X//' >graphics/aseprite/distinfo << '6665c5a11a4ca0d6bbe98dedf07e15f6' XSHA256 (aseprite-aseprite-v1.1.1-b659747_GH0.tar.gz) = 45b08dcf5fd02a8759c1cfbf5cd7b2c80b988993bd2d7a1f24b8e3601a60245c XSIZE (aseprite-aseprite-v1.1.1-b659747_GH0.tar.gz) = 2979354 XSHA256 (aseprite-flic-da184cb_GH0.tar.gz) = 118f422957ea59121a14f0474471cfb09fcf62fe9834b9b683671e53fb675075 XSIZE (aseprite-flic-da184cb_GH0.tar.gz) = 6552 XSHA256 (aseprite-gtest-d63c625_GH0.tar.gz) = 9f8be975b8672f7e2e14053744bc9433aa8d0f613378ca1a9ab99ac87ba11a39 XSIZE (aseprite-gtest-d63c625_GH0.tar.gz) = 989187 XSHA256 (aseprite-simpleini-d4a436a_GH0.tar.gz) = d78bdc44396b81501c5ad1b59d06db9055b037db53ef2a30dd583194ed3133fa XSIZE (aseprite-simpleini-d4a436a_GH0.tar.gz) = 54668 XSHA256 (aseprite-duktape-90090c7_GH0.tar.gz) = a188d14e622a10429588376da8d77c3a79dd268a241e15a1bc6f2a3e04d126ce XSIZE (aseprite-duktape-90090c7_GH0.tar.gz) = 608122 6665c5a11a4ca0d6bbe98dedf07e15f6 echo x - graphics/aseprite/pkg-descr sed 's/^X//' >graphics/aseprite/pkg-descr << '17ed3bd669accc34c9385da4d2ac3a91' XAseprite is an open source program to create animated sprites. X* Its main features are: X* Sprites are composed by layers & frames (as separated concepts). X* Supported color modes: RGBA, Indexed (palettes up to 256 colors), X and Grayscale. X* Load/save sequence of PNG files and GIF animations X (and FLC, FLI, JPG, BMP, PCX, TGA). X* Export/import animations to/from Sprite Sheets. X* Tiled drawing mode, useful to draw patterns and textures. X* Undo/Redo for every operation. X* Real-time animation preview. X* Multiple editors support. X* Pixel-art specific tools like filled Contour, Polygon, Shading mode, etc. X* Onion skinning X XWWW: http://www.aseprite.org/ 17ed3bd669accc34c9385da4d2ac3a91 echo x - graphics/aseprite/pkg-plist sed 's/^X//' >graphics/aseprite/pkg-plist << '0a8cfdc3fb41220deba9f64008447ac3' Xbin/aseprite X%%DATADIR%%/data/convmatr.def X%%DATADIR%%/data/fonts/allegro.pcx X%%DATADIR%%/data/fonts/anipro_fixed.pcx X%%DATADIR%%/data/fonts/anipro_variable.pcx X%%DATADIR%%/data/fonts/ase1.pcx X%%DATADIR%%/data/fonts/ase2.pcx X%%DATADIR%%/data/gui.xml X%%DATADIR%%/data/icons/ase.ico X%%DATADIR%%/data/icons/ase16.png X%%DATADIR%%/data/icons/ase32.png X%%DATADIR%%/data/icons/ase48.png X%%DATADIR%%/data/icons/ase64.png X%%DATADIR%%/data/icons/doc.ico X%%DATADIR%%/data/icons/doc16.png X%%DATADIR%%/data/icons/doc32.png X%%DATADIR%%/data/icons/doc48.png X%%DATADIR%%/data/icons/doc64.png X%%DATADIR%%/data/palettes/apple-ii.gpl X%%DATADIR%%/data/palettes/arne16.gpl X%%DATADIR%%/data/palettes/arne32.gpl X%%DATADIR%%/data/palettes/atari2600-ntsc.gpl X%%DATADIR%%/data/palettes/atari2600-pal.gpl X%%DATADIR%%/data/palettes/cga.gpl X%%DATADIR%%/data/palettes/commodore-plus4.gpl X%%DATADIR%%/data/palettes/commodore-vic20.gpl X%%DATADIR%%/data/palettes/commodore64.gpl X%%DATADIR%%/data/palettes/db16.gpl X%%DATADIR%%/data/palettes/db32.gpl X%%DATADIR%%/data/palettes/gameboy.gpl X%%DATADIR%%/data/palettes/google-ui.gpl X%%DATADIR%%/data/palettes/master-system.gpl X%%DATADIR%%/data/palettes/nes-ntsc.gpl X%%DATADIR%%/data/palettes/nes.gpl X%%DATADIR%%/data/palettes/solarized.gpl X%%DATADIR%%/data/palettes/teletext.gpl X%%DATADIR%%/data/palettes/win16.gpl X%%DATADIR%%/data/palettes/zx-spectrum.gpl X%%DATADIR%%/data/pref.xml X%%DATADIR%%/data/scripts/white_to_alpha.js X%%DATADIR%%/data/skins/default/font.png X%%DATADIR%%/data/skins/default/minifont.png X%%DATADIR%%/data/skins/default/palette.png X%%DATADIR%%/data/skins/default/sheet.png X%%DATADIR%%/data/skins/default/skin.xml X%%DATADIR%%/data/widgets/advanced_mode.xml X%%DATADIR%%/data/widgets/canvas_size.xml X%%DATADIR%%/data/widgets/cel_properties.xml X%%DATADIR%%/data/widgets/color_curve_point.xml X%%DATADIR%%/data/widgets/convolution_matrix.xml X%%DATADIR%%/data/widgets/despeckle.xml X%%DATADIR%%/data/widgets/duplicate_sprite.xml X%%DATADIR%%/data/widgets/export_sprite_sheet.xml X%%DATADIR%%/data/widgets/file_selector.xml X%%DATADIR%%/data/widgets/font_popup.xml X%%DATADIR%%/data/widgets/frame_properties.xml X%%DATADIR%%/data/widgets/frame_tag_properties.xml X%%DATADIR%%/data/widgets/gif_options.xml X%%DATADIR%%/data/widgets/goto_frame.xml X%%DATADIR%%/data/widgets/grid_settings.xml X%%DATADIR%%/data/widgets/home_view.xml X%%DATADIR%%/data/widgets/import_sprite_sheet.xml X%%DATADIR%%/data/widgets/jpeg_options.xml X%%DATADIR%%/data/widgets/keyboard_shortcuts.xml X%%DATADIR%%/data/widgets/layer_properties.xml X%%DATADIR%%/data/widgets/main_window.xml X%%DATADIR%%/data/widgets/new_folder_window.xml X%%DATADIR%%/data/widgets/new_layer.xml X%%DATADIR%%/data/widgets/new_sprite.xml X%%DATADIR%%/data/widgets/options.xml X%%DATADIR%%/data/widgets/palette_from_sprite.xml X%%DATADIR%%/data/widgets/palette_popup.xml X%%DATADIR%%/data/widgets/palette_size.xml X%%DATADIR%%/data/widgets/paste_text.xml X%%DATADIR%%/data/widgets/replace_color.xml X%%DATADIR%%/data/widgets/select_accelerator.xml X%%DATADIR%%/data/widgets/send_crash.xml X%%DATADIR%%/data/widgets/sprite_properties.xml X%%DATADIR%%/data/widgets/sprite_size.xml X%%DATADIR%%/data/widgets/timeline_conf.xml X%%DATADIR%%/data/widgets/undo_history.xml X%%DATADIR%%/data/widgets/webp_options.xml X%%DATADIR%%/data/%%WWWDIR%%.css X%%DATADIR%%/data/%%WWWDIR%%.js X%%DATADIR%%/data/%%WWWDIR%%.png X%%DATADIR%%/data/www/index.html 0a8cfdc3fb41220deba9f64008447ac3 echo c - graphics/aseprite/files mkdir -p graphics/aseprite/files > /dev/null 2>&1 echo x - graphics/aseprite/files/patch-src_app_resource__finder.cpp sed 's/^X//' >graphics/aseprite/files/patch-src_app_resource__finder.cpp << '9aa7549eed45d9fa343cc411207dd1d1' X--- src/app/resource_finder.cpp.orig 2015-11-06 13:40:13 UTC X+++ src/app/resource_finder.cpp X@@ -105,7 +105,7 @@ void ResourceFinder::includeDataDir(cons X includeBinDir(buf); X #else X // $BINDIR/../share/aseprite/data/filename (installed in /usr/ or /usr/local/) X- sprintf(buf, "../share/aseprite/data/%s", filename); X+ sprintf(buf, "%%LOCALBASE%%/share/aseprite/data/%s", filename); X includeBinDir(buf); X #endif X 9aa7549eed45d9fa343cc411207dd1d1 echo x - graphics/aseprite/files/patch-src_app_util_freetype__utils.cpp sed 's/^X//' >graphics/aseprite/files/patch-src_app_util_freetype__utils.cpp << '6ac1322df23ec3140099ba670f7c9880' X--- src/app/util/freetype_utils.cpp.orig 2015-11-06 13:40:13 UTC X+++ src/app/util/freetype_utils.cpp X@@ -21,7 +21,7 @@ X X #include X X-#include "freetype/ftglyph.h" X+#include X #include "ft2build.h" X #include FT_FREETYPE_H X 6ac1322df23ec3140099ba670f7c9880 echo x - graphics/aseprite/files/patch-src_base_file__handle.cpp sed 's/^X//' >graphics/aseprite/files/patch-src_base_file__handle.cpp << '8d50d281ba906412e15b0f12bfa45b40' X--- src/base/file_handle.cpp.orig 2015-11-06 13:40:13 UTC X+++ src/base/file_handle.cpp X@@ -26,6 +26,8 @@ X #define O_TEXT 0 X #endif X X+#include X+ X using namespace std; X X namespace base { 8d50d281ba906412e15b0f12bfa45b40 echo x - graphics/aseprite/files/patch-src_doc_blend__internals.h sed 's/^X//' >graphics/aseprite/files/patch-src_doc_blend__internals.h << '2a5d6b9437d8b8808df5186aeb055b31' X--- src/doc/blend_internals.h.orig 2015-11-06 13:40:13 UTC X+++ src/doc/blend_internals.h X@@ -8,7 +8,7 @@ X #define DOC_BLEND_INTERNALS_H_INCLUDED X #pragma once X X-#include "../../third_party/pixman/pixman/pixman-combine32.h" X+#include <../../../../files/pixman-combine32.h> X X #if !defined(MUL_UN8) || !defined(DIV_UN8) X #error Invalid Pixman library 2a5d6b9437d8b8808df5186aeb055b31 echo x - graphics/aseprite/files/pixman-combine32.h sed 's/^X//' >graphics/aseprite/files/pixman-combine32.h << 'a2409b0159166db6c6b83a3a7aeeb7d3' X#define COMPONENT_SIZE 8 X#define MASK 0xff X#define ONE_HALF 0x80 X X#define A_SHIFT 8 * 3 X#define R_SHIFT 8 * 2 X#define G_SHIFT 8 X#define A_MASK 0xff000000 X#define R_MASK 0xff0000 X#define G_MASK 0xff00 X X#define RB_MASK 0xff00ff X#define AG_MASK 0xff00ff00 X#define RB_ONE_HALF 0x800080 X#define RB_MASK_PLUS_ONE 0x10000100 X X#define ALPHA_8(x) ((x) >> A_SHIFT) X#define RED_8(x) (((x) >> R_SHIFT) & MASK) X#define GREEN_8(x) (((x) >> G_SHIFT) & MASK) X#define BLUE_8(x) ((x) & MASK) X X/* X * ARMv6 has UQADD8 instruction, which implements unsigned saturated X * addition for 8-bit values packed in 32-bit registers. It is very useful X * for UN8x4_ADD_UN8x4, UN8_rb_ADD_UN8_rb and ADD_UN8 macros (which would X * otherwise need a lot of arithmetic operations to simulate this operation). X * Since most of the major ARM linux distros are built for ARMv7, we are X * much less dependent on runtime CPU detection and can get practical X * benefits from conditional compilation here for a lot of users. X */ X X#if defined(USE_GCC_INLINE_ASM) && defined(__arm__) && \ X !defined(__aarch64__) && (!defined(__thumb__) || defined(__thumb2__)) X#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || \ X defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \ X defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) || \ X defined(__ARM_ARCH_6M__) || defined(__ARM_ARCH_7__) || \ X defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || \ X defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) X Xstatic force_inline uint32_t Xun8x4_add_un8x4 (uint32_t x, uint32_t y) X{ X uint32_t t; X asm ("uqadd8 %0, %1, %2" : "=r" (t) : "%r" (x), "r" (y)); X return t; X} X X#define UN8x4_ADD_UN8x4(x, y) \ X ((x) = un8x4_add_un8x4 ((x), (y))) X X#define UN8_rb_ADD_UN8_rb(x, y, t) \ X ((t) = un8x4_add_un8x4 ((x), (y)), (x) = (t)) X X#define ADD_UN8(x, y, t) \ X ((t) = (x), un8x4_add_un8x4 ((t), (y))) X X#endif X#endif X X/*****************************************************************************/ X X/* X * Helper macros. X */ X X#define MUL_UN8(a, b, t) \ X ((t) = (a) * (uint16_t)(b) + ONE_HALF, ((((t) >> G_SHIFT ) + (t) ) >> G_SHIFT )) X X#define DIV_UN8(a, b) \ X (((uint16_t) (a) * MASK + ((b) / 2)) / (b)) X X#ifndef ADD_UN8 X#define ADD_UN8(x, y, t) \ X ((t) = (x) + (y), \ X (uint32_t) (uint8_t) ((t) | (0 - ((t) >> G_SHIFT)))) X#endif X X#define DIV_ONE_UN8(x) \ X (((x) + ONE_HALF + (((x) + ONE_HALF) >> G_SHIFT)) >> G_SHIFT) X X/* X * The methods below use some tricks to be able to do two color X * components at the same time. X */ X X/* X * x_rb = (x_rb * a) / 255 X */ X#define UN8_rb_MUL_UN8(x, a, t) \ X do \ X { \ X t = ((x) & RB_MASK) * (a); \ X t += RB_ONE_HALF; \ X x = (t + ((t >> G_SHIFT) & RB_MASK)) >> G_SHIFT; \ X x &= RB_MASK; \ X } while (0) X X/* X * x_rb = min (x_rb + y_rb, 255) X */ X#ifndef UN8_rb_ADD_UN8_rb X#define UN8_rb_ADD_UN8_rb(x, y, t) \ X do \ X { \ X t = ((x) + (y)); \ X t |= RB_MASK_PLUS_ONE - ((t >> G_SHIFT) & RB_MASK); \ X x = (t & RB_MASK); \ X } while (0) X#endif X X/* X * x_rb = (x_rb * a_rb) / 255 X */ X#define UN8_rb_MUL_UN8_rb(x, a, t) \ X do \ X { \ X t = (x & MASK) * (a & MASK); \ X t |= (x & R_MASK) * ((a >> R_SHIFT) & MASK); \ X t += RB_ONE_HALF; \ X t = (t + ((t >> G_SHIFT) & RB_MASK)) >> G_SHIFT; \ X x = t & RB_MASK; \ X } while (0) X X/* X * x_c = (x_c * a) / 255 X */ X#define UN8x4_MUL_UN8(x, a) \ X do \ X { \ X uint32_t r1__, r2__, t__; \ X \ X r1__ = (x); \ X UN8_rb_MUL_UN8 (r1__, (a), t__); \ X \ X r2__ = (x) >> G_SHIFT; \ X UN8_rb_MUL_UN8 (r2__, (a), t__); \ X \ X (x) = r1__ | (r2__ << G_SHIFT); \ X } while (0) X X/* X * x_c = (x_c * a) / 255 + y_c X */ X#define UN8x4_MUL_UN8_ADD_UN8x4(x, a, y) \ X do \ X { \ X uint32_t r1__, r2__, r3__, t__; \ X \ X r1__ = (x); \ X r2__ = (y) & RB_MASK; \ X UN8_rb_MUL_UN8 (r1__, (a), t__); \ X UN8_rb_ADD_UN8_rb (r1__, r2__, t__); \ X \ X r2__ = (x) >> G_SHIFT; \ X r3__ = ((y) >> G_SHIFT) & RB_MASK; \ X UN8_rb_MUL_UN8 (r2__, (a), t__); \ X UN8_rb_ADD_UN8_rb (r2__, r3__, t__); \ X \ X (x) = r1__ | (r2__ << G_SHIFT); \ X } while (0) X X/* X * x_c = (x_c * a + y_c * b) / 255 X */ X#define UN8x4_MUL_UN8_ADD_UN8x4_MUL_UN8(x, a, y, b) \ X do \ X { \ X uint32_t r1__, r2__, r3__, t__; \ X \ X r1__ = (x); \ X r2__ = (y); \ X UN8_rb_MUL_UN8 (r1__, (a), t__); \ X UN8_rb_MUL_UN8 (r2__, (b), t__); \ X UN8_rb_ADD_UN8_rb (r1__, r2__, t__); \ X \ X r2__ = ((x) >> G_SHIFT); \ X r3__ = ((y) >> G_SHIFT); \ X UN8_rb_MUL_UN8 (r2__, (a), t__); \ X UN8_rb_MUL_UN8 (r3__, (b), t__); \ X UN8_rb_ADD_UN8_rb (r2__, r3__, t__); \ X \ X (x) = r1__ | (r2__ << G_SHIFT); \ X } while (0) X X/* X * x_c = (x_c * a_c) / 255 X */ X#define UN8x4_MUL_UN8x4(x, a) \ X do \ X { \ X uint32_t r1__, r2__, r3__, t__; \ X \ X r1__ = (x); \ X r2__ = (a); \ X UN8_rb_MUL_UN8_rb (r1__, r2__, t__); \ X \ X r2__ = (x) >> G_SHIFT; \ X r3__ = (a) >> G_SHIFT; \ X UN8_rb_MUL_UN8_rb (r2__, r3__, t__); \ X \ X (x) = r1__ | (r2__ << G_SHIFT); \ X } while (0) X X/* X * x_c = (x_c * a_c) / 255 + y_c X */ X#define UN8x4_MUL_UN8x4_ADD_UN8x4(x, a, y) \ X do \ X { \ X uint32_t r1__, r2__, r3__, t__; \ X \ X r1__ = (x); \ X r2__ = (a); \ X UN8_rb_MUL_UN8_rb (r1__, r2__, t__); \ X r2__ = (y) & RB_MASK; \ X UN8_rb_ADD_UN8_rb (r1__, r2__, t__); \ X \ X r2__ = ((x) >> G_SHIFT); \ X r3__ = ((a) >> G_SHIFT); \ X UN8_rb_MUL_UN8_rb (r2__, r3__, t__); \ X r3__ = ((y) >> G_SHIFT) & RB_MASK; \ X UN8_rb_ADD_UN8_rb (r2__, r3__, t__); \ X \ X (x) = r1__ | (r2__ << G_SHIFT); \ X } while (0) X X/* X * x_c = (x_c * a_c + y_c * b) / 255 X */ X#define UN8x4_MUL_UN8x4_ADD_UN8x4_MUL_UN8(x, a, y, b) \ X do \ X { \ X uint32_t r1__, r2__, r3__, t__; \ X \ X r1__ = (x); \ X r2__ = (a); \ X UN8_rb_MUL_UN8_rb (r1__, r2__, t__); \ X r2__ = (y); \ X UN8_rb_MUL_UN8 (r2__, (b), t__); \ X UN8_rb_ADD_UN8_rb (r1__, r2__, t__); \ X \ X r2__ = (x) >> G_SHIFT; \ X r3__ = (a) >> G_SHIFT; \ X UN8_rb_MUL_UN8_rb (r2__, r3__, t__); \ X r3__ = (y) >> G_SHIFT; \ X UN8_rb_MUL_UN8 (r3__, (b), t__); \ X UN8_rb_ADD_UN8_rb (r2__, r3__, t__); \ X \ X x = r1__ | (r2__ << G_SHIFT); \ X } while (0) X X/* X x_c = min(x_c + y_c, 255) X*/ X#ifndef UN8x4_ADD_UN8x4 X#define UN8x4_ADD_UN8x4(x, y) \ X do \ X { \ X uint32_t r1__, r2__, r3__, t__; \ X \ X r1__ = (x) & RB_MASK; \ X r2__ = (y) & RB_MASK; \ X UN8_rb_ADD_UN8_rb (r1__, r2__, t__); \ X \ X r2__ = ((x) >> G_SHIFT) & RB_MASK; \ X r3__ = ((y) >> G_SHIFT) & RB_MASK; \ X UN8_rb_ADD_UN8_rb (r2__, r3__, t__); \ X \ X x = r1__ | (r2__ << G_SHIFT); \ X } while (0) X#endif a2409b0159166db6c6b83a3a7aeeb7d3 exit