Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | update tcl-stbimage to version 1.0 |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
7a24cc3bac98858842e8b7557196f2e2 |
User & Date: | chw 2024-06-04 11:54:31.692 |
Context
2024-06-04
| ||
14:17 | more sentinels in jni and undroid subtrees check-in: 4bab1f71fc user: chw tags: trunk | |
11:54 | update tcl-stbimage to version 1.0 check-in: 7a24cc3bac user: chw tags: trunk | |
04:09 | more tklib upstream changes check-in: 06e99a5fe8 user: chw tags: trunk | |
Changes
Name change from assets/stbimage0.9/pkgIndex.tcl to assets/stbimage1.0/pkgIndex.tcl.
|
| | | 1 2 | package ifneeded stbimage 1.0 \ [list load libstbimage[info sharedlibextension] stbimage] |
Changes to jni/tcl-stbimage/Android.mk.
︙ | ︙ | |||
28 29 30 31 32 33 34 | LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES) LOCAL_SRC_FILES := generic/tclstbimage.c LOCAL_CFLAGS := $(tcl_cflags) $(tk_cflags) \ -DPACKAGE_NAME="\"stbimage\"" \ | | | 28 29 30 31 32 33 34 35 36 37 38 39 40 | LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES) LOCAL_SRC_FILES := generic/tclstbimage.c LOCAL_CFLAGS := $(tcl_cflags) $(tk_cflags) \ -DPACKAGE_NAME="\"stbimage\"" \ -DPACKAGE_VERSION="\"1.0\"" \ -O2 LOCAL_SHARED_LIBRARIES := libtcl libtk include $(BUILD_SHARED_LIBRARY) |
Changes to jni/tcl-stbimage/ChangeLog.
1 2 3 4 5 6 7 | 2024-05-15 Danilo Chang * Bump version to v0.9 2024-05-14 Danilo Chang * Update stb_image_resize2.h | > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 | 2024-06-04 Danilo Chang * Bump version to v1.0 * Update stb_image_resize2.h and stb_image.h 2024-05-15 Danilo Chang * Bump version to v0.9 2024-05-14 Danilo Chang * Update stb_image_resize2.h |
︙ | ︙ |
Changes to jni/tcl-stbimage/configure.
1 2 | #! /bin/sh # Guess values for system-dependent variables and create Makefiles. | | | 1 2 3 4 5 6 7 8 9 10 | #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for stbimage 1.0. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. |
︙ | ︙ | |||
573 574 575 576 577 578 579 | subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='stbimage' PACKAGE_TARNAME='stbimage' | | | | 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 | subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='stbimage' PACKAGE_TARNAME='stbimage' PACKAGE_VERSION='1.0' PACKAGE_STRING='stbimage 1.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include <stdio.h> #ifdef HAVE_SYS_TYPES_H |
︙ | ︙ | |||
1313 1314 1315 1316 1317 1318 1319 | # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF | | | 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 | # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures stbimage 1.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. |
︙ | ︙ | |||
1375 1376 1377 1378 1379 1380 1381 | cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in | | | 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 | cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of stbimage 1.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] |
︙ | ︙ | |||
1477 1478 1479 1480 1481 1482 1483 | cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF | | | 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 | cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF stbimage configure 1.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit |
︙ | ︙ | |||
1842 1843 1844 1845 1846 1847 1848 | eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. | | | 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 | eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by stbimage $as_me 1.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { |
︙ | ︙ | |||
9477 9478 9479 9480 9481 9482 9483 | test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" | | | 9477 9478 9479 9480 9481 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 | test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by stbimage $as_me 1.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ |
︙ | ︙ | |||
9530 9531 9532 9533 9534 9535 9536 | Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ | | | 9530 9531 9532 9533 9534 9535 9536 9537 9538 9539 9540 9541 9542 9543 9544 | Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ stbimage config.status 1.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." |
︙ | ︙ |
Changes to jni/tcl-stbimage/configure.ac.
︙ | ︙ | |||
15 16 17 18 19 20 21 | # This initializes the environment with PACKAGE_NAME and PACKAGE_VERSION # set as provided. These will also be added as -D defs in your Makefile # so you can encode the package version directly into the source files. # This will also define a special symbol for Windows (BUILD_<PACKAGE_NAME> # so that we create the export library with the dll. #----------------------------------------------------------------------- | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # This initializes the environment with PACKAGE_NAME and PACKAGE_VERSION # set as provided. These will also be added as -D defs in your Makefile # so you can encode the package version directly into the source files. # This will also define a special symbol for Windows (BUILD_<PACKAGE_NAME> # so that we create the export library with the dll. #----------------------------------------------------------------------- AC_INIT([stbimage],[1.0]) #-------------------------------------------------------------------- # Call TEA_INIT as the first TEA_ macro to set up initial vars. # This will define a ${TEA_PLATFORM} variable == "unix" or "windows" # as well as PKG_LIB_FILE and PKG_STUB_LIB_FILE. #-------------------------------------------------------------------- |
︙ | ︙ |
Changes to jni/tcl-stbimage/generic/stb_image.h.
|
| | | 1 2 3 4 5 6 7 8 | /* stb_image - v2.30 - public domain image loader - http://nothings.org/stb no warranty implied; use at your own risk Do this: #define STB_IMAGE_IMPLEMENTATION before you include this file in *one* C or C++ file to create the implementation. // i.e. it should look like this: |
︙ | ︙ | |||
44 45 46 47 48 49 50 51 52 53 54 55 56 57 | LICENSE See end of file for license information. RECENT REVISION HISTORY: 2.29 (2023-05-xx) optimizations 2.28 (2023-01-29) many error fixes, security errors, just tons of stuff 2.27 (2021-07-11) document stbi_info better, 16-bit PNM support, bug fixes 2.26 (2020-07-13) many minor fixes 2.25 (2020-02-02) fix warnings 2.24 (2020-02-02) fix warnings; thread-local failure_reason and flip_vertically 2.23 (2019-08-11) fix clang static analysis warning | > | 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | LICENSE See end of file for license information. RECENT REVISION HISTORY: 2.30 (2024-05-31) avoid erroneous gcc warning 2.29 (2023-05-xx) optimizations 2.28 (2023-01-29) many error fixes, security errors, just tons of stuff 2.27 (2021-07-11) document stbi_info better, 16-bit PNM support, bug fixes 2.26 (2020-07-13) many minor fixes 2.25 (2020-02-02) fix warnings 2.24 (2020-02-02) fix warnings; thread-local failure_reason and flip_vertically 2.23 (2019-08-11) fix clang static analysis warning |
︙ | ︙ | |||
5155 5156 5157 5158 5159 5160 5161 | } else { if (!(s->img_n & 1)) return stbi__err("tRNS with alpha","Corrupt PNG"); if (c.length != (stbi__uint32) s->img_n*2) return stbi__err("bad tRNS len","Corrupt PNG"); has_trans = 1; // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } if (z->depth == 16) { | > | > | | 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 | } else { if (!(s->img_n & 1)) return stbi__err("tRNS with alpha","Corrupt PNG"); if (c.length != (stbi__uint32) s->img_n*2) return stbi__err("bad tRNS len","Corrupt PNG"); has_trans = 1; // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } if (z->depth == 16) { for (k = 0; k < s->img_n && k < 3; ++k) // extra loop test to suppress false GCC warning tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is } else { for (k = 0; k < s->img_n && k < 3; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger } } break; } case STBI__PNG_TYPE('I','D','A','T'): { if (first) return stbi__err("first not IHDR", "Corrupt PNG"); |
︙ | ︙ |
Changes to jni/tcl-stbimage/generic/stb_image_resize2.h.
|
| | | 1 2 3 4 5 6 7 8 | /* stb_image_resize2 - v2.07 - public domain image resizing by Jeff Roberts (v2) and Jorge L Rodriguez http://github.com/nothings/stb Can be threaded with the extended API. SSE2, AVX, Neon and WASM SIMD support. Only scaling and translation is supported, no rotations or shears. |
︙ | ︙ | |||
324 325 326 327 328 329 330 | Fabian Giesen: half float and srgb converters Sean Barrett: API design, optimizations Jorge L Rodriguez: Original 1.0 implementation Aras Pranckevicius: bugfixes Nathan Reed: warning fixes for 1.0 REVISIONS | > > > > | | 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 | Fabian Giesen: half float and srgb converters Sean Barrett: API design, optimizations Jorge L Rodriguez: Original 1.0 implementation Aras Pranckevicius: bugfixes Nathan Reed: warning fixes for 1.0 REVISIONS 2.07 (2024-05-24) fix for slow final split during threaded conversions of very wide scanlines when downsampling (caused by extra input converting), fix for wide scanline resamples with many splits (int overflow), fix GCC warning. 2.06 (2024-02-10) fix for identical width/height 3x or more down-scaling undersampling a single row on rare resize ratios (about 1%) 2.05 (2024-02-07) fix for 2 pixel to 1 pixel resizes with wrap (thanks Aras) fix for output callback (thanks Julien Koenen) 2.04 (2023-11-17) fix for rare AVX bug, shadowed symbol (thanks Nikola Smiljanic). 2.03 (2023-11-01) ASAN and TSAN warnings fixed, minor tweaks. 2.00 (2023-10-10) mostly new source: new api, optimizations, simd, vertical-first, etc (2x-5x faster without simd, 4x-12x faster with simd) |
︙ | ︙ | |||
1064 1065 1066 1067 1068 1069 1070 | stbir__decode_pixels_func * decode_pixels; stbir__alpha_weight_func * alpha_weight; stbir__horizontal_gather_channels_func * horizontal_gather_channels; stbir__alpha_unweight_func * alpha_unweight; stbir__encode_pixels_func * encode_pixels; | | | | 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 | stbir__decode_pixels_func * decode_pixels; stbir__alpha_weight_func * alpha_weight; stbir__horizontal_gather_channels_func * horizontal_gather_channels; stbir__alpha_unweight_func * alpha_unweight; stbir__encode_pixels_func * encode_pixels; int alloc_ring_buffer_num_entries; // Number of entries in the ring buffer that will be allocated int splits; // count of splits stbir_internal_pixel_layout input_pixel_layout_internal; stbir_internal_pixel_layout output_pixel_layout_internal; int input_color_and_type; int offset_x, offset_y; // offset within output_data int vertical_first; int channels; int effective_channels; // same as channels, except on RGBA/ARGB (7), or XA/AX (3) size_t alloced_total; }; #define stbir__max_uint8_as_float 255.0f #define stbir__max_uint16_as_float 65535.0f #define stbir__max_uint8_as_float_inverted (1.0f/255.0f) #define stbir__max_uint16_as_float_inverted (1.0f/65535.0f) |
︙ | ︙ | |||
2509 2510 2511 2512 2513 2514 2515 | // the non-simd remnant loops to be unroll because they only run a few times // Adding this switch saves about 5K on clang which is Captain Unroll the 3rd. #define STBIR_SIMD_STREAMOUT_PTR( star ) STBIR_STREAMOUT_PTR( star ) #define STBIR_SIMD_NO_UNROLL(ptr) STBIR_NO_UNROLL(ptr) #ifdef STBIR_MEMCPY #undef STBIR_MEMCPY | < > | 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 | // the non-simd remnant loops to be unroll because they only run a few times // Adding this switch saves about 5K on clang which is Captain Unroll the 3rd. #define STBIR_SIMD_STREAMOUT_PTR( star ) STBIR_STREAMOUT_PTR( star ) #define STBIR_SIMD_NO_UNROLL(ptr) STBIR_NO_UNROLL(ptr) #ifdef STBIR_MEMCPY #undef STBIR_MEMCPY #endif #define STBIR_MEMCPY stbir_simd_memcpy // override normal use of memcpy with much simpler copy (faster and smaller with our sized copies) static void stbir_simd_memcpy( void * dest, void const * src, size_t bytes ) { char STBIR_SIMD_STREAMOUT_PTR (*) d = (char*) dest; char STBIR_SIMD_STREAMOUT_PTR( * ) d_end = ((char*) dest) + bytes; ptrdiff_t ofs_to_src = (char*)src - (char*)dest; |
︙ | ︙ | |||
2542 2543 2544 2545 2546 2547 2548 | } else { stbir__simdf x; // do one unaligned to get us aligned for the stream out below stbir__simdf_load( x, ( d + ofs_to_src ) ); stbir__simdf_store( d, x ); | | | 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 | } else { stbir__simdf x; // do one unaligned to get us aligned for the stream out below stbir__simdf_load( x, ( d + ofs_to_src ) ); stbir__simdf_store( d, x ); d = (char*)( ( ( (size_t)d ) + 16 ) & ~15 ); for(;;) { STBIR_SIMD_NO_UNROLL(d); if ( d > ( d_end - 16 ) ) { |
︙ | ︙ | |||
2574 2575 2576 2577 2578 2579 2580 | stbir__simdfX_load( x1, ( d + ofs_to_src ) + 4*stbir__simdfX_float_count ); stbir__simdfX_load( x2, ( d + ofs_to_src ) + 8*stbir__simdfX_float_count ); stbir__simdfX_load( x3, ( d + ofs_to_src ) + 12*stbir__simdfX_float_count ); stbir__simdfX_store( d + 0*stbir__simdfX_float_count, x0 ); stbir__simdfX_store( d + 4*stbir__simdfX_float_count, x1 ); stbir__simdfX_store( d + 8*stbir__simdfX_float_count, x2 ); stbir__simdfX_store( d + 12*stbir__simdfX_float_count, x3 ); | | | 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 | stbir__simdfX_load( x1, ( d + ofs_to_src ) + 4*stbir__simdfX_float_count ); stbir__simdfX_load( x2, ( d + ofs_to_src ) + 8*stbir__simdfX_float_count ); stbir__simdfX_load( x3, ( d + ofs_to_src ) + 12*stbir__simdfX_float_count ); stbir__simdfX_store( d + 0*stbir__simdfX_float_count, x0 ); stbir__simdfX_store( d + 4*stbir__simdfX_float_count, x1 ); stbir__simdfX_store( d + 8*stbir__simdfX_float_count, x2 ); stbir__simdfX_store( d + 12*stbir__simdfX_float_count, x3 ); d = (char*)( ( ( (size_t)d ) + (16*stbir__simdfX_float_count) ) & ~((16*stbir__simdfX_float_count)-1) ); for(;;) { STBIR_SIMD_NO_UNROLL(d); if ( d > ( d_end - (16*stbir__simdfX_float_count) ) ) { |
︙ | ︙ | |||
4395 4396 4397 4398 4399 4400 4401 | { int channels = stbir_info->channels; int effective_channels = stbir_info->effective_channels; int input_sample_in_bytes = stbir__type_size[stbir_info->input_type] * channels; stbir_edge edge_horizontal = stbir_info->horizontal.edge; stbir_edge edge_vertical = stbir_info->vertical.edge; int row = stbir__edge_wrap(edge_vertical, n, stbir_info->vertical.scale_info.input_full_size); | | | 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 | { int channels = stbir_info->channels; int effective_channels = stbir_info->effective_channels; int input_sample_in_bytes = stbir__type_size[stbir_info->input_type] * channels; stbir_edge edge_horizontal = stbir_info->horizontal.edge; stbir_edge edge_vertical = stbir_info->vertical.edge; int row = stbir__edge_wrap(edge_vertical, n, stbir_info->vertical.scale_info.input_full_size); const void* input_plane_data = ( (char *) stbir_info->input_data ) + (size_t)row * (size_t) stbir_info->input_stride_bytes; stbir__span const * spans = stbir_info->scanline_extents.spans; float* full_decode_buffer = output_buffer - stbir_info->scanline_extents.conservative.n0 * effective_channels; // if we are on edge_zero, and we get in here with an out of bounds n, then the calculate filters has failed STBIR_ASSERT( !(edge_vertical == STBIR_EDGE_ZERO && (n < 0 || n >= stbir_info->vertical.scale_info.input_full_size)) ); do |
︙ | ︙ | |||
6048 6049 6050 6051 6052 6053 6054 | if ( vertical_first ) { // Now resample the gathered vertical data in the horizontal axis into the encode buffer stbir__resample_horizontal_gather(stbir_info, encode_buffer, decode_buffer STBIR_ONLY_PROFILE_SET_SPLIT_INFO ); } | | | 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 | if ( vertical_first ) { // Now resample the gathered vertical data in the horizontal axis into the encode buffer stbir__resample_horizontal_gather(stbir_info, encode_buffer, decode_buffer STBIR_ONLY_PROFILE_SET_SPLIT_INFO ); } stbir__encode_scanline( stbir_info, ( (char *) stbir_info->output_data ) + ((size_t)n * (size_t)stbir_info->output_stride_bytes), encode_buffer, n STBIR_ONLY_PROFILE_SET_SPLIT_INFO ); } static void stbir__decode_and_resample_for_vertical_gather_loop(stbir__info const * stbir_info, stbir__per_split_info* split_info, int n) { int ring_buffer_index; float* ring_buffer; |
︙ | ︙ | |||
6089 6090 6091 6092 6093 6094 6095 | end_output_y = split_info[split_count-1].end_output_y; vertical_contributors += start_output_y; vertical_coefficients += start_output_y * stbir_info->vertical.coefficient_width; // initialize the ring buffer for gathering split_info->ring_buffer_begin_index = 0; | | | 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 | end_output_y = split_info[split_count-1].end_output_y; vertical_contributors += start_output_y; vertical_coefficients += start_output_y * stbir_info->vertical.coefficient_width; // initialize the ring buffer for gathering split_info->ring_buffer_begin_index = 0; split_info->ring_buffer_first_scanline = vertical_contributors->n0; split_info->ring_buffer_last_scanline = split_info->ring_buffer_first_scanline - 1; // means "empty" for (y = start_output_y; y < end_output_y; y++) { int in_first_scanline, in_last_scanline; in_first_scanline = vertical_contributors->n0; |
︙ | ︙ | |||
6143 6144 6145 6146 6147 6148 6149 | static void stbir__encode_first_scanline_from_scatter(stbir__info const * stbir_info, stbir__per_split_info* split_info) { // evict a scanline out into the output buffer float* ring_buffer_entry = stbir__get_ring_buffer_entry(stbir_info, split_info, split_info->ring_buffer_begin_index ); // dump the scanline out | | | | 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 | static void stbir__encode_first_scanline_from_scatter(stbir__info const * stbir_info, stbir__per_split_info* split_info) { // evict a scanline out into the output buffer float* ring_buffer_entry = stbir__get_ring_buffer_entry(stbir_info, split_info, split_info->ring_buffer_begin_index ); // dump the scanline out stbir__encode_scanline( stbir_info, ( (char *)stbir_info->output_data ) + ( (size_t)split_info->ring_buffer_first_scanline * (size_t)stbir_info->output_stride_bytes ), ring_buffer_entry, split_info->ring_buffer_first_scanline STBIR_ONLY_PROFILE_SET_SPLIT_INFO ); // mark it as empty ring_buffer_entry[ 0 ] = STBIR__FLOAT_EMPTY_MARKER; // advance the first scanline split_info->ring_buffer_first_scanline++; if ( ++split_info->ring_buffer_begin_index == stbir_info->ring_buffer_num_entries ) split_info->ring_buffer_begin_index = 0; } static void stbir__horizontal_resample_and_encode_first_scanline_from_scatter(stbir__info const * stbir_info, stbir__per_split_info* split_info) { // evict a scanline out into the output buffer float* ring_buffer_entry = stbir__get_ring_buffer_entry(stbir_info, split_info, split_info->ring_buffer_begin_index ); // Now resample it into the buffer. stbir__resample_horizontal_gather( stbir_info, split_info->vertical_buffer, ring_buffer_entry STBIR_ONLY_PROFILE_SET_SPLIT_INFO ); // dump the scanline out stbir__encode_scanline( stbir_info, ( (char *)stbir_info->output_data ) + ( (size_t)split_info->ring_buffer_first_scanline * (size_t)stbir_info->output_stride_bytes ), split_info->vertical_buffer, split_info->ring_buffer_first_scanline STBIR_ONLY_PROFILE_SET_SPLIT_INFO ); // mark it as empty ring_buffer_entry[ 0 ] = STBIR__FLOAT_EMPTY_MARKER; // advance the first scanline split_info->ring_buffer_first_scanline++; if ( ++split_info->ring_buffer_begin_index == stbir_info->ring_buffer_num_entries ) |
︙ | ︙ | |||
6761 6762 6763 6764 6765 6766 6767 | static stbir__info * stbir__alloc_internal_mem_and_build_samplers( stbir__sampler * horizontal, stbir__sampler * vertical, stbir__contributors * conservative, stbir_pixel_layout input_pixel_layout_public, stbir_pixel_layout output_pixel_layout_public, int splits, int new_x, int new_y, int fast_alpha, void * user_data STBIR_ONLY_PROFILE_BUILD_GET_INFO ) { static char stbir_channel_count_index[8]={ 9,0,1,2, 3,9,9,4 }; stbir__info * info = 0; void * alloced = 0; | | | 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 | static stbir__info * stbir__alloc_internal_mem_and_build_samplers( stbir__sampler * horizontal, stbir__sampler * vertical, stbir__contributors * conservative, stbir_pixel_layout input_pixel_layout_public, stbir_pixel_layout output_pixel_layout_public, int splits, int new_x, int new_y, int fast_alpha, void * user_data STBIR_ONLY_PROFILE_BUILD_GET_INFO ) { static char stbir_channel_count_index[8]={ 9,0,1,2, 3,9,9,4 }; stbir__info * info = 0; void * alloced = 0; size_t alloced_total = 0; int vertical_first; int decode_buffer_size, ring_buffer_length_bytes, ring_buffer_size, vertical_buffer_size, alloc_ring_buffer_num_entries; int alpha_weighting_type = 0; // 0=none, 1=simple, 2=fancy int conservative_split_output_size = stbir__get_max_split( splits, vertical->scale_info.output_sub_size ); stbir_internal_pixel_layout input_pixel_layout = stbir__pixel_layout_convert_public_to_internal[ input_pixel_layout_public ]; stbir_internal_pixel_layout output_pixel_layout = stbir__pixel_layout_convert_public_to_internal[ output_pixel_layout_public ]; |
︙ | ︙ | |||
7104 7105 7106 7107 7108 7109 7110 | #undef STBIR__NEXT_PTR // is this the first time through loop? if ( info == 0 ) { | | | 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 7118 7119 7120 7121 7122 | #undef STBIR__NEXT_PTR // is this the first time through loop? if ( info == 0 ) { alloced_total = ( 15 + (size_t)advance_mem ); alloced = STBIR_MALLOC( alloced_total, user_data ); if ( alloced == 0 ) return 0; } else return info; // success } |
︙ | ︙ | |||
7221 7222 7223 7224 7225 7226 7227 | if ( info->input_stride_bytes == 0 ) info->input_stride_bytes = info->channels * info->horizontal.scale_info.input_full_size * stbir__type_size[input_type]; if ( info->output_stride_bytes == 0 ) info->output_stride_bytes = info->channels * info->horizontal.scale_info.output_sub_size * stbir__type_size[output_type]; // calc offset | | | 7225 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 7238 7239 | if ( info->input_stride_bytes == 0 ) info->input_stride_bytes = info->channels * info->horizontal.scale_info.input_full_size * stbir__type_size[input_type]; if ( info->output_stride_bytes == 0 ) info->output_stride_bytes = info->channels * info->horizontal.scale_info.output_sub_size * stbir__type_size[output_type]; // calc offset info->output_data = ( (char*) resize->output_pixels ) + ( (size_t) info->offset_y * (size_t) resize->output_stride_in_bytes ) + ( info->offset_x * info->channels * stbir__type_size[output_type] ); info->in_pixels_cb = resize->input_cb; info->user_data = resize->user_data; info->out_pixels_cb = resize->output_cb; // setup the input format converters if ( ( input_type == STBIR_TYPE_UINT8 ) || ( input_type == STBIR_TYPE_UINT16 ) ) |
︙ | ︙ | |||
7793 7794 7795 7796 7797 7798 7799 | if ( output_stride_in_bytes == 0 ) output_stride_in_bytes = pitch; if ( output_stride_in_bytes < pitch ) return 0; | | | 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 | if ( output_stride_in_bytes == 0 ) output_stride_in_bytes = pitch; if ( output_stride_in_bytes < pitch ) return 0; size = (size_t)output_stride_in_bytes * (size_t)output_h; if ( size == 0 ) return 0; *ret_ptr = 0; *ret_pitch = output_stride_in_bytes; if ( output_pixels == 0 ) |
︙ | ︙ | |||
8565 8566 8567 8568 8569 8570 8571 | static void STBIR__CODER_NAME( stbir__encode_uint8_srgb )( void * outputp, int width_times_channels, float const * encode ) { unsigned char STBIR_SIMD_STREAMOUT_PTR( * ) output = (unsigned char*) outputp; unsigned char * end_output = ( (unsigned char*) output ) + width_times_channels; #ifdef STBIR_SIMD | < | | 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 8582 8583 8584 8585 8586 8587 8588 8589 8590 8591 8592 8593 8594 8595 8596 8597 8598 8599 8600 8601 | static void STBIR__CODER_NAME( stbir__encode_uint8_srgb )( void * outputp, int width_times_channels, float const * encode ) { unsigned char STBIR_SIMD_STREAMOUT_PTR( * ) output = (unsigned char*) outputp; unsigned char * end_output = ( (unsigned char*) output ) + width_times_channels; #ifdef STBIR_SIMD if ( width_times_channels >= 16 ) { float const * end_encode_m16 = encode + width_times_channels - 16; end_output -= 16; for(;;) { stbir__simdf f0, f1, f2, f3; stbir__simdi i0, i1, i2, i3; STBIR_SIMD_NO_UNROLL(encode); stbir__simdf_load4_transposed( f0, f1, f2, f3, encode ); stbir__min_max_shift20( i0, f0 ); stbir__min_max_shift20( i1, f1 ); stbir__min_max_shift20( i2, f2 ); stbir__min_max_shift20( i3, f3 ); stbir__simdi_table_lookup4( i0, i1, i2, i3, ( fp32_to_srgb8_tab4 - (127-13)*8 ) ); stbir__linear_to_srgb_finish( i0, f0 ); stbir__linear_to_srgb_finish( i1, f1 ); stbir__linear_to_srgb_finish( i2, f2 ); stbir__linear_to_srgb_finish( i3, f3 ); stbir__interleave_pack_and_store_16_u8( output, STBIR_strs_join1(i, ,stbir__encode_order0), STBIR_strs_join1(i, ,stbir__encode_order1), STBIR_strs_join1(i, ,stbir__encode_order2), STBIR_strs_join1(i, ,stbir__encode_order3) ); |
︙ | ︙ | |||
8666 8667 8668 8669 8670 8671 8672 | static void STBIR__CODER_NAME( stbir__encode_uint8_srgb4_linearalpha )( void * outputp, int width_times_channels, float const * encode ) { unsigned char STBIR_SIMD_STREAMOUT_PTR( * ) output = (unsigned char*) outputp; unsigned char * end_output = ( (unsigned char*) output ) + width_times_channels; #ifdef STBIR_SIMD | < | | 8669 8670 8671 8672 8673 8674 8675 8676 8677 8678 8679 8680 8681 8682 8683 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 | static void STBIR__CODER_NAME( stbir__encode_uint8_srgb4_linearalpha )( void * outputp, int width_times_channels, float const * encode ) { unsigned char STBIR_SIMD_STREAMOUT_PTR( * ) output = (unsigned char*) outputp; unsigned char * end_output = ( (unsigned char*) output ) + width_times_channels; #ifdef STBIR_SIMD if ( width_times_channels >= 16 ) { float const * end_encode_m16 = encode + width_times_channels - 16; end_output -= 16; for(;;) { stbir__simdf f0, f1, f2, f3; stbir__simdi i0, i1, i2, i3; STBIR_SIMD_NO_UNROLL(encode); stbir__simdf_load4_transposed( f0, f1, f2, f3, encode ); stbir__min_max_shift20( i0, f0 ); stbir__min_max_shift20( i1, f1 ); stbir__min_max_shift20( i2, f2 ); stbir__scale_and_convert( i3, f3 ); stbir__simdi_table_lookup3( i0, i1, i2, ( fp32_to_srgb8_tab4 - (127-13)*8 ) ); stbir__linear_to_srgb_finish( i0, f0 ); stbir__linear_to_srgb_finish( i1, f1 ); stbir__linear_to_srgb_finish( i2, f2 ); stbir__interleave_pack_and_store_16_u8( output, STBIR_strs_join1(i, ,stbir__encode_order0), STBIR_strs_join1(i, ,stbir__encode_order1), STBIR_strs_join1(i, ,stbir__encode_order2), STBIR_strs_join1(i, ,stbir__encode_order3) ); |
︙ | ︙ | |||
8757 8758 8759 8760 8761 8762 8763 | static void STBIR__CODER_NAME( stbir__encode_uint8_srgb2_linearalpha )( void * outputp, int width_times_channels, float const * encode ) { unsigned char STBIR_SIMD_STREAMOUT_PTR( * ) output = (unsigned char*) outputp; unsigned char * end_output = ( (unsigned char*) output ) + width_times_channels; #ifdef STBIR_SIMD | < | | 8759 8760 8761 8762 8763 8764 8765 8766 8767 8768 8769 8770 8771 8772 8773 8774 8775 8776 8777 8778 8779 8780 8781 8782 8783 8784 8785 8786 8787 8788 8789 8790 8791 | static void STBIR__CODER_NAME( stbir__encode_uint8_srgb2_linearalpha )( void * outputp, int width_times_channels, float const * encode ) { unsigned char STBIR_SIMD_STREAMOUT_PTR( * ) output = (unsigned char*) outputp; unsigned char * end_output = ( (unsigned char*) output ) + width_times_channels; #ifdef STBIR_SIMD if ( width_times_channels >= 16 ) { float const * end_encode_m16 = encode + width_times_channels - 16; end_output -= 16; for(;;) { stbir__simdf f0, f1, f2, f3; stbir__simdi i0, i1, i2, i3; STBIR_SIMD_NO_UNROLL(encode); stbir__simdf_load4_transposed( f0, f1, f2, f3, encode ); stbir__min_max_shift20( i0, f0 ); stbir__scale_and_convert( i1, f1 ); stbir__min_max_shift20( i2, f2 ); stbir__scale_and_convert( i3, f3 ); stbir__simdi_table_lookup2( i0, i2, ( fp32_to_srgb8_tab4 - (127-13)*8 ) ); stbir__linear_to_srgb_finish( i0, f0 ); stbir__linear_to_srgb_finish( i2, f2 ); stbir__interleave_pack_and_store_16_u8( output, STBIR_strs_join1(i, ,stbir__encode_order0), STBIR_strs_join1(i, ,stbir__encode_order1), STBIR_strs_join1(i, ,stbir__encode_order2), STBIR_strs_join1(i, ,stbir__encode_order3) ); output += 16; |
︙ | ︙ |
Changes to jni/tcl-stbimage/tcl-stbimage.spec.
1 2 3 4 5 6 7 | %{!?directory:%define directory /usr} %define buildroot %{_tmppath}/%{name} %define packckname stbimage Name: tcl-stbimage Summary: Tcl extension for stb_image | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | %{!?directory:%define directory /usr} %define buildroot %{_tmppath}/%{name} %define packckname stbimage Name: tcl-stbimage Summary: Tcl extension for stb_image Version: 1.0 Release: 0 License: MIT Group: Development/Libraries/Tcl Source: %{name}-%{version}.tar.gz URL: https://github.com/ray2501/tcl-stbimage BuildRequires: autoconf BuildRequires: make |
︙ | ︙ |
Changes to undroid/luck/cgi-bin/luck.tips.
︙ | ︙ | |||
176 177 178 179 180 181 182 | snack2.2 {Sound toolkit (MP3 and OGG support not provided)} snap70.1 {Tcl interface to snap7 using Ffidl and TclOO} sqlite3.45.2 {Embedded SQL database} sqlite3.45.3 {Embedded SQL database} sqlite3.46.0 {Embedded SQL database} stardom0.42 {Small XML browser/editor based on tdom and bwidget} starsync1.0 {Support package for SDX utility} | | | | 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 | snack2.2 {Sound toolkit (MP3 and OGG support not provided)} snap70.1 {Tcl interface to snap7 using Ffidl and TclOO} sqlite3.45.2 {Embedded SQL database} sqlite3.45.3 {Embedded SQL database} sqlite3.46.0 {Embedded SQL database} stardom0.42 {Small XML browser/editor based on tdom and bwidget} starsync1.0 {Support package for SDX utility} stbimage0.9 {Danilo Chang's Tcl binding to stb_image} stbimage1.0 {Danilo Chang's Tcl binding to stb_image} stringfileinfo0.2 {Support package for SDX utility} sun-valley-ttk {Sun-Valley ttk themes} tangoicons0.1 {Tango icons using tksvg} tbcload1.7 {Byte-code loader} tcl {The Tcl core} tcl8 {The Tcl core} tcl8.6 {The Tcl core} |
︙ | ︙ |