"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/gmic_stdlib.gmic" between
gmic_2.8.1.tar.gz and gmic_2.8.2.tar.gz

About: G’MIC (GREY’s Magic for Image Computing) is a framework for image processing. It provides several different user interfaces to convert/manipulate/filter/ visualize generic image datasets (usable standalone or as plug-in for GIMP and Krita).

gmic_stdlib.gmic  (gmic_2.8.1):gmic_stdlib.gmic  (gmic_2.8.2)
skipping to change at line 81 skipping to change at line 81
# - A comment line starting with '#@gui_xx' will define a filter only for a spec ific language 'xx' # - A comment line starting with '#@gui_xx' will define a filter only for a spec ific language 'xx'
# (e.g. 'en','fr'...). # (e.g. 'en','fr'...).
# - A comment line starting with '#@gui_xx hide(/Filter or folder name)' will hi de the existing # - A comment line starting with '#@gui_xx hide(/Filter or folder name)' will hi de the existing
# filter of folder for the locale 'xx'. # filter of folder for the locale 'xx'.
# - More precisely, the syntax of a '#@gui' comment line is : # - More precisely, the syntax of a '#@gui' comment line is :
# #
# '#@gui Folder name' # '#@gui Folder name'
# #
# or # or
# #
# '#@gui Command name : command, preview_command, parameter = typedef, parame # '#@gui Command name : command, preview_command (zoom_factor)[+] [: default_
ter2 = typedef' input_mode]
# '#@gui : parameter3 = typedef, parameter4 = typedef ...., parameterN = type # '#@gui : parameter1 = typedef(arguments1...), parameter2 = typedef(argument
def' s2...)'
# '#@gui : parameter3 = typedef(arguments3...),
# #
# where : # where :
# #
# 'command' is the G'MIC command name called to process the image. # 'command' is the G'MIC command name called to process the image.
# #
# 'preview_command' is the G'MIC command name called to process the preview . # 'preview_command' is the G'MIC command name called to process the preview .
# #
# Note that you can optionally specify a float-valued factor>=0 betwee n parentheses at the end of # Note that you can optionally specify a float-valued factor>=0 betwee n parentheses at the end of
# the 'preview_command' to force the default zoom factor used by the p review for this filter. # the 'preview_command' to force the default zoom factor used by the p review for this filter.
# Use (0) for a 1:1 preview, (1) for previewing the whole image, (2) f or 1/2 image and so on... # Use (0) for a 1:1 preview, (1) for previewing the whole image, (2) f or 1/2 image and so on...
# You can also put an additional '+' sign after the parenthesis to spe cify the rendered preview # You can also put an additional '+' sign after the parenthesis to spe cify the rendered preview
# is still accurate for different zoom factors. # is still accurate for different zoom factors.
# #
# 'default_input_mode' set the default input mode for that filter. It can b
e
# { x=none | .=active (default) | *=all | +=active & below | -=active & a
bove | v=all visible | i=all invisible }
#
# 'parameter = typedef' tells about the names, types and default values of the filter parameters. # 'parameter = typedef' tells about the names, types and default values of the filter parameters.
# #
# 'typedef' can be : # 'typedef' can be :
# #
# _ 'bool(default_value={ 0 | 1 | false | true })': # _ 'bool(default_value={ 0 | 1 | false | true })':
# Add a boolean parameter (0 or 1) (as a checkbutton). # Add a boolean parameter (0 or 1) (as a checkbutton).
# #
# _ 'button(_alignment)': # _ 'button(_alignment)':
# Add a boolean parameter (0 or 1) (as a button). # Add a boolean parameter (0 or 1) (as a button).
# #
# _ 'choice(_default_index,Choice0,..,ChoiceN)': # _ 'choice(_default_index,Choice0,..,ChoiceN)':
# Add a integer parameter (as a combobox). # Add a integer parameter (as a combobox).
# #
# _ 'color(R,_G,_B,_A)': # _ 'color(R,_G,_B,_A)':
# Add R,G,B[,A] parameters (as a colorchooser). # Add R,G,B[,A] parameters (as a colorchooser).
# #
# _ 'point(_X,_Y,_removable={ -1 | 0 | 1 },_burst={ 0 | 1 },_R,_G,_B,_[-]A, _radius%)': # _ 'point(_X,_Y,_removable={ -1 | 0 | 1 },_burst={ 0 | 1 },_R,_G,_B,_[-]A, _radius[%])':
# Add X,Y parameters (as a moveable point over the preview). # Add X,Y parameters (as a moveable point over the preview).
# #
# _ 'value(value)': # _ 'value(value)':
# Add a pre-defined value parameter (not displayed). # Add a pre-defined value parameter (not displayed).
# #
# _ 'file[_in,_out](_default_filename)': # _ 'file[_in,_out](_default_filename)':
# Add a filename parameter (as a filechooser). # Add a filename parameter (as a filechooser).
# #
# _ 'float(default_value,min_value,max_value)': # _ 'float(default_value,min_value,max_value)':
# Add a float-valued parameter (as a float slider). # Add a float-valued parameter (as a float slider).
skipping to change at line 146 skipping to change at line 150
# _ 'text(_is_multiline={ 0 | 1 },_default text)': # _ 'text(_is_multiline={ 0 | 1 },_default text)':
# Add a single or multi-line text parameter (as a text entry). # Add a single or multi-line text parameter (as a text entry).
# #
# _ 'separator()': # _ 'separator()':
# Display an horizontal separator (do not add a parameter). # Display an horizontal separator (do not add a parameter).
# #
# Type separators '()' can be replaced by '[]' or '{}' if necessary (for insta nce if parentheses are required in # Type separators '()' can be replaced by '[]' or '{}' if necessary (for insta nce if parentheses are required in
# an argument of the typedef, e.g in a text). You can also replace 'typedef' b y '_typedef' to tell the plug-in not # an argument of the typedef, e.g in a text). You can also replace 'typedef' b y '_typedef' to tell the plug-in not
# to update the image preview when the corresponding parameter is modified. # to update the image preview when the corresponding parameter is modified.
# After the closing separator, you may specify a 'visibility state' character for the parameter, which can be # After the closing separator, you may specify a 'visibility state' character for the parameter, which can be
# { _0: Hidden | _1: Grayed-out | _2: Visible (default) }, opt. followed by a propagation character that tells # { _0=Hidden | _1=Grayed-out | _2=Visible (default) }, opt. followed by a pro pagation character that tells
# if this visibility state must be propagated to neighboring non-valued interf ace widgets # if this visibility state must be propagated to neighboring non-valued interf ace widgets
# (s.a. separator(), link() or note()). # (s.a. separator(), link() or note()).
# This propagation character can be: # This propagation character can be:
# { '+'=propagate forward | '-'=propagate backward | '*'=propagate in both dir ections }. # { '+'=propagate forward | '-'=propagate backward | '*'=propagate in both dir ections }.
# #
# Use '_none_' as a special command or preview_command to tell the plug-in tha t the entry requires no G'MIC call. # Use '_none_' as a special command or preview_command to tell the plug-in tha t the entry requires no G'MIC call.
# #
# A G'MIC command can set new values for each filter parameter, through the st atus (see command 'status'). # A G'MIC command can set new values for each filter parameter, through the st atus (see command 'status').
# To do so, the returned status must follow the syntax : # To do so, the returned status must follow the syntax :
# '{params1}{params2}{..}{paramsN}' where N must be exactly equal to the numbe r of parameters # '{params1}{params2}{..}{paramsN}' where N must be exactly equal to the numbe r of parameters
skipping to change at line 525 skipping to change at line 529
\n \n
\n - Prepending a single hyphen '"${g}"-"$n"' to a "${-GMIC}" command is allowe d. This may be useful to recognize \n - Prepending a single hyphen '"${g}"-"$n"' to a "${-GMIC}" command is allowe d. This may be useful to recognize
\n command items more easily in a one-liner pipeline (typically invoked from a shell). \n command items more easily in a one-liner pipeline (typically invoked from a shell).
\n \n
\n - A "${-GMIC}" command prepended with a plus sign '"${g}"+"$n"' or a double hyphen '"${g}"--"$n"' does not act \n - A "${-GMIC}" command prepended with a plus sign '"${g}"+"$n"' or a double hyphen '"${g}"--"$n"' does not act
'in-place' 'in-place'
\n but inserts its result as one or several new images at the end of the ima ge list. \n but inserts its result as one or several new images at the end of the ima ge list.
\n \n
\n - There are two different types of commands that can be run by the "${-GMIC} " interpreter: \n - There are two different types of commands that can be run by the "${-GMIC} " interpreter:
\n \n
\n . "${g}"Builtin commands"$n", are the hard-coded functionalities in the in terpreter core. They are thus \n . "${g}"Built-in commands"$n", are the hard-coded functionalities in the i nterpreter core. They are thus
\n compiled as binary code and run fast, most of the time. Omitting an arg ument when invoking a \n compiled as binary code and run fast, most of the time. Omitting an arg ument when invoking a
\n builtin command is not permitted, except if all following arguments are also omitted. \n built-in command is not permitted, except if all following arguments ar e also omitted.
\n For instance, invoking '"${c}"plasma 10,,5"$n"' is invalid but '"${c}"p lasma 10"$n"' is correct. \n For instance, invoking '"${c}"plasma 10,,5"$n"' is invalid but '"${c}"p lasma 10"$n"' is correct.
\n . "${g}"Custom commands"$n", are defined as "${-GMIC}" pipelines of builti \n . "${g}"Custom commands"$n", are defined as "${-GMIC}" pipelines of built-
n or other custom commands. in or other custom commands.
\n They are parsed by the "${-GMIC}" interpreter, and thus run a bit slowe \n They are parsed by the "${-GMIC}" interpreter, and thus run a bit slowe
r than builtin commands. r than built-in commands.
\n Omitting arguments when invoking a custom command is permitted. For ins tance, expressions \n Omitting arguments when invoking a custom command is permitted. For ins tance, expressions
\n '"${c}"flower ,,,100,,2"$n"' or '"${c}"flower ,"$n"' are correct. \n '"${c}"flower ,,,100,,2"$n"' or '"${c}"flower ,"$n"' are correct.
\n \n
\n - Most of the existing commands in "${-GMIC}" are actually defined as "${g}" custom commands"$n". \n - Most of the existing commands in "${-GMIC}" are actually defined as "${g}" custom commands"$n".
\n \n
\n - A user can easily add its own custom commands to the "${-GMIC}" interprete r (see section \n - A user can easily add its own custom commands to the "${-GMIC}" interprete r (see section
\n '"${c}"Adding custom commands"$n"' for more details). New builtin command s cannot be added \n '"${c}"Adding custom commands"$n"' for more details). New built-in comman ds cannot be added
\n (unless you modify the "${-GMIC}" interpreter source code and recompile i t)." \n (unless you modify the "${-GMIC}" interpreter source code and recompile i t)."
_help_section "Input/output properties" _help_section "Input/output properties"
_help_paragraph " - "${-GMIC}" is able to read/write most of the classical im age file formats, including: _help_paragraph " - "${-GMIC}" is able to read/write most of the classical im age file formats, including:
\n \n
\n . 2D grayscale/color files: "${c}".png, .jpeg, .gif, .pnm, .tif, .bmp, ... "$n" \n . 2D grayscale/color files: "${c}".png, .jpeg, .gif, .pnm, .tif, .bmp, ... "$n"
\n . 3D volumetric files: "${c}".dcm, .hdr, .nii, .pan, .inr, .pnk, ..."$n" \n . 3D volumetric files: "${c}".dcm, .hdr, .nii, .pan, .inr, .pnk, ..."$n"
\n . video files: "${c}".mpeg, .avi, .mov, .ogg, .flv, ..."$n" \n . video files: "${c}".mpeg, .avi, .mov, .ogg, .flv, ..."$n"
\n . Generic ascii or binary data files: "${c}".gmz, .cimg, .cimgz, .dlm, .as c, .pfm, .raw, .txt, .h."$n" \n . Generic ascii or binary data files: "${c}".gmz, .cimg, .cimgz, .dlm, .as c, .pfm, .raw, .txt, .h."$n"
skipping to change at line 896 skipping to change at line 900
Argument "${g}"A"$n" can be also replaced by Argument "${g}"A"$n" can be also replaced by
\n an image index "${g}"#ind"$n". \n an image index "${g}"#ind"$n".
\n . A "${g}"2"$n"-dimensional vector may be seen as a complex number and used in those particular \n . A "${g}"2"$n"-dimensional vector may be seen as a complex number and used in those particular
\n functions/operators: \n functions/operators:
\n '"${c}"**"$n"' (complex multiplication), '"${c}"//"$n"' (complex div ision), '"${c}"^^"$n"' \n '"${c}"**"$n"' (complex multiplication), '"${c}"//"$n"' (complex div ision), '"${c}"^^"$n"'
(complex exponentiation), (complex exponentiation),
\n '"${c}"**="$n"' (complex self-multiplication), '"${c}"//="$n"' (comp lex self-division), '"${c}"^^="$n"' \n '"${c}"**="$n"' (complex self-multiplication), '"${c}"//="$n"' (comp lex self-division), '"${c}"^^="$n"'
(complex (complex
\n self-exponentiation), '"${c}"cabs()"$n"' (complex modulus), '"${c}"c arg()"$n"' (complex argument), \n self-exponentiation), '"${c}"cabs()"$n"' (complex modulus), '"${c}"c arg()"$n"' (complex argument),
'"${c}"cconj()"$n"' '"${c}"cconj()"$n"'
\n (complex conjugate), '"${c}"cexp()"$n"' (complex exponential) and '" \n (complex conjugate), '"${c}"cexp()"$n"' (complex exponential), '"${c
${c}"clog()"$n"' (complex logarithm). }"clog()"$n"' (complex logarithm)
\n '"${c}"ccos()"$n"' (complex cosine), '"${c}"csin()"$n"' (complex sin
e), '"${c}"ctan()"$n"' \
(complex tangent),
\n '"${c}"ccosh()"$n"' (complex hyperpolic cosine), '"${c}"csinh()"$n"'
(complex hyperbolic sine)
\n and '"${c}"ctanh()"$n"' (complex hyperbolic tangent).
\n . A "${g}"MN"$n"-dimensional vector may be seen as a "${g}"M"${n}" x "$ {g}"N"$n" matrix and used in those \n . A "${g}"MN"$n"-dimensional vector may be seen as a "${g}"M"${n}" x "$ {g}"N"$n" matrix and used in those
\n particular functions/operators: \n particular functions/operators:
\n '"${c}"*"$n"' (matrix-vector multiplication), '"${c}"det(A)"$n"' (de terminant), '"${c}"diag(V)"$n"' \n '"${c}"*"$n"' (matrix-vector multiplication), '"${c}"det(A)"$n"' (de terminant), '"${c}"diag(V)"$n"'
(diagonal matrix (diagonal matrix
\n from a vector), '"${c}"eig(A)"$n"' (eigenvalues/eigenvectors), '"${c }"eye(n)"$n"' (n x n identity matrix), \n from a vector), '"${c}"eig(A)"$n"' (eigenvalues/eigenvectors), '"${c }"eye(n)"$n"' (n x n identity matrix),
\n '"${c}"inv(A)"$n"' (matrix inverse), '"${c}"mul(A,B,_nb_colsB)"$n"' (matrix-matrix multiplication), \n '"${c}"inv(A)"$n"' (matrix inverse), '"${c}"mul(A,B,_nb_colsB)"$n"' (matrix-matrix multiplication),
\n '"${c}"pseudoinv(A,_nb_colsA)"$n"', '"${c}"rot(u,v,w,angle)"$n"' (3D rotation matrix), \n '"${c}"pseudoinv(A,_nb_colsA)"$n"', '"${c}"rot(u,v,w,angle)"$n"' (3D rotation matrix),
'"${c}"rot(angle)"$n"' (2D '"${c}"rot(angle)"$n"' (2D
\n rotation matrix), '"${c}"solve(A,B,_nb_colsB)"$n"' (least-square sol ver of linear system A.X = B), \n rotation matrix), '"${c}"solve(A,B,_nb_colsB)"$n"' (least-square sol ver of linear system A.X = B),
\n '"${c}"svd(A,_nb_colsA)"$n"' (singular value decomposition), '"${c}" trace(A)"$n"' (matrix trace) and \n '"${c}"svd(A,_nb_colsA)"$n"' (singular value decomposition), '"${c}" trace(A)"$n"' (matrix trace) and
skipping to change at line 1253 skipping to change at line 1261
\n - If one numbered argument required by a custom command misses a value, an e rror is thrown by the \n - If one numbered argument required by a custom command misses a value, an e rror is thrown by the
\n "${-GMIC}" interpreter." \n "${-GMIC}" interpreter."
_help_section "List of commands" _help_section "List of commands"
_help_paragraph " All available "${-GMIC}" commands are listed below, classi fied by themes. When several choices of _help_paragraph " All available "${-GMIC}" commands are listed below, classi fied by themes. When several choices of
\n command arguments are possible, they appear separated by '"${g}"|"$n"'. An argument specified inside '"${g}"[]"$n"' \n command arguments are possible, they appear separated by '"${g}"|"$n"'. An argument specified inside '"${g}"[]"$n"'
\n or starting by '"${g}"_"$n"' is optional except when standing for an existi ng image "${c}"[image]"$n", where '"\ \n or starting by '"${g}"_"$n"' is optional except when standing for an existi ng image "${c}"[image]"$n", where '"\
${g}"image"$n"' ${g}"image"$n"'
\n can be either an index number or an image name. In this case, the '"${g}"[] "$n"' characters are mandatory \n can be either an index number or an image name. In this case, the '"${g}"[] "$n"' characters are mandatory
\n when writing the item. A command marked with '"${g}"(+)"$n"' is one of the "${g}"builtin"$n" commands. Note also \n when writing the item. A command marked with '"${g}"(+)"$n"' is one of the "${g}"built-in"$n" commands. Note also
\n that all images that serve as illustrations in this reference documentation are normalized in \n that all images that serve as illustrations in this reference documentation are normalized in
\n range "${g}"[0,255]"$n" before being displayed. You may need to do this exp licitly (command \n range "${g}"[0,255]"$n" before being displayed. You may need to do this exp licitly (command
\n '"${c}"normalize 0,255"$n"') if you want to save and view images with the s ame aspect than those \n '"${c}"normalize 0,255"$n"') if you want to save and view images with the s ame aspect than those
\n illustrated in the example codes." \n illustrated in the example codes."
_help_examples : _help_examples :
g=$_gmic_g c=$_gmic_c n=$_gmic_n g=$_gmic_g c=$_gmic_c n=$_gmic_n
_help_section "Examples of use" _help_section "Examples of use"
_help_paragraph " '"${g}"gmic"$n"' is a generic image processing tool which ca n be used in a wide variety _help_paragraph " '"${g}"gmic"$n"' is a generic image processing tool which ca n be used in a wide variety
skipping to change at line 1646 skipping to change at line 1654
if $_vt100 if $_vt100
_gmic_n="\33[0;0;0m" _gmic_n="\33[0;0;0m"
_gmic_r="\33[0;31;59m" _gmic_r="\33[0;31;59m"
_gmic_g="\33[0;32;59m" _gmic_g="\33[0;32;59m"
_gmic_m="\33[0;35;59m" _gmic_m="\33[0;35;59m"
_gmic_c="\33[0;36;59m" _gmic_c="\33[0;36;59m"
_gmic_b="\33[1m" _gmic_b="\33[1m"
fi fi
#@cli version #@cli version
#@cli : Display current version number on stdout. #@cli : Display current version number on stdout.
version : version :
m "_e : echo_stdout[] \"$""*\"" m "_e : echo_stdout[] \"$""*\""
__help_header_ascii[] __help_header_ascii[]
if $^>=0 _e "" fi if $^>=0 _e "" fi
uncommand _e uncommand _e
v : # Allow 'gmic +v' to get the version number. v : # Allow 'gmic +v' to get the version number.
version version
#------------------------------- #-------------------------------
skipping to change at line 1669 skipping to change at line 1677
# #
#------------------------------- #-------------------------------
#@cli camera : _camera_index>=0,_nb_frames>0,_skip_frames>=0,_capture_width>=0,_ capture_height>=0 : (+) #@cli camera : _camera_index>=0,_nb_frames>0,_skip_frames>=0,_capture_width>=0,_ capture_height>=0 : (+)
#@cli : Insert one or several frames from specified camera. #@cli : Insert one or several frames from specified camera.
#@cli : When 'nb_frames==0', the camera stream is released instead of capturing new images. #@cli : When 'nb_frames==0', the camera stream is released instead of capturing new images.
#@cli : Default values: 'camera_index=0' (default camera), 'nb_frames=1', 'skip_ frames=0' and \ #@cli : Default values: 'camera_index=0' (default camera), 'nb_frames=1', 'skip_ frames=0' and \
# 'capture_width=capture_height=0' (default size). # 'capture_width=capture_height=0' (default size).
#@cli clut : "clut_name",_resolution>0,_cut_and_round={ 0=no | 1=yes } #@cli clut : "clut_name",_resolution>0,_cut_and_round={ 0=no | 1=yes }
#@cli : Insert one of the 796 pre-defined CLUTs at the end of the image list.\n #@cli : Insert one of the 856 pre-defined CLUTs at the end of the image list.\n
#@cli : 'clut_name' can be { 2-strip-process | 60s | 60s_faded | 60s_faded_alt | action_magenta_01 | action_red_01 | \ #@cli : 'clut_name' can be { 2-strip-process | 60s | 60s_faded | 60s_faded_alt | action_magenta_01 | action_red_01 | \
# adventure_1453 | agfa_apx_100 | agfa_apx_25 | agfa_precisa_100 | agfa_ultra_co lor_100 | agfa_vista_200 | \ # adventure_1453 | agfa_apx_100 | agfa_apx_25 | agfa_precisa_100 | agfa_ultra_co lor_100 | agfa_vista_200 | \
# agressive_highligjtes_recovery_5 | alien_green | amstragram | amstragram+ | an # agressive_highligjtes_recovery_5 | alberto_street | alien_green | amstragram |
alogfx_anno_1870_color | \ amstragram+ | \
# analogfx_old_style_i | analogfx_old_style_ii | analogfx_old_style_iii | analog # analogfx_anno_1870_color | analogfx_old_style_i | analogfx_old_style_ii | anal
fx_sepia_color | \ ogfx_old_style_iii | \
# analogfx_soft_sepia_i | analogfx_soft_sepia_ii | anime | apocalypse_this_very_ # analogfx_sepia_color | analogfx_soft_sepia_i | analogfx_soft_sepia_ii | anime
moment | aqua | \ | apocalypse_this_very_moment | \
# aqua_and_orange_dark | arabica_12 | autumn | ava_614 | avalanche | azrael_93 | # aqua | aqua_and_orange_dark | arabica_12 | autumn | ava_614 | avalanche | azra
bboyz_2 | berlin_sky | \ el_93 | bboyz_2 | berlin_sky | \
# black_and_white | black_star | blade_runner | bleach_bypass | bleachbypass_1 | bleachbypass_2 | bleachbypass_3 | \ # black_and_white | black_star | blade_runner | bleach_bypass | bleachbypass_1 | bleachbypass_2 | bleachbypass_3 | \
# bleachbypass_4 | bleech_bypass_green | bleech_bypass_yellow_01 | blue_dark | b # bleachbypass_4 | bleech_bypass_green | bleech_bypass_yellow_01 | blue_cold_fad
lue_house | blue_ice | blue_mono | \ e | blue_dark | blue_house | \
# blue_shadows_01 | blues | bob_ford | bourbon_64 | bright_green_01 | brightgree # blue_ice | blue_mono | blue_shadows_01 | blues | bob_ford | bourbon_64 | brigh
n | brownish | bw_1 | bw_10 | bw_2 | \ t_green_01 | bright_teal_orange | \
# bw_3 | bw_4 | bw_5 | bw_6 | bw_7 | bw_8 | bw_9 | byers_11 | candlelight | cari # bright_warm | brightgreen | brownish | bw_1 | bw_10 | bw_2 | bw_3 | bw_4 | bw_
be | chemical_168 | chrome_01 | \ 5 | bw_6 | bw_7 | bw_8 | bw_9 | \
# cinema | cinema_2 | cinema_3 | cinema_4 | cinema_5 | cinema_noir | cinematic-1 # byers_11 | candlelight | caribe | chemical_168 | chrome_01 | cinema | cinema_2
| cinematic-10 | cinematic-2 | \ | cinema_3 | cinema_4 | cinema_5 | \
# cinematic-3 | cinematic-4 | cinematic-5 | cinematic-6 | cinematic-7 | cinemati # cinema_noir | cinematic-1 | cinematic-10 | cinematic-2 | cinematic-3 | cinemat
c-8 | cinematic-9 | cinematic_01 | \ ic-4 | cinematic-5 | cinematic-6 | \
# cinematic_02 | cinematic_03 | cinematic_for_flog | cinematic_lady_bird | cinem # cinematic-7 | cinematic-8 | cinematic-9 | cinematic_01 | cinematic_02 | cinema
atic_mexico | city_7 | \ tic_03 | cinematic_for_flog | \
# classic_teal_and_orange | clayton_33 | clouseau_54 | cobi_3 | coffee_44 | cold # cinematic_lady_bird | cinematic_mexico | city_7 | classic_teal_and_orange | cl
_simplicity_2 | color_rich | \ ayton_33 | clear_teal_fade | \
# clouseau_54 | cobi_3 | coffee_44 | cold_clear_blue | cold_clear_blue_1 | cold_
simplicity_2 | color_rich | \
# colorful_0209 | colornegative | conflict_01 | contrail_35 | contrast_with_high lights_protection | \ # colorful_0209 | colornegative | conflict_01 | contrail_35 | contrast_with_high lights_protection | \
# contrasty_afternoon | contrasty_green | crispromance | crispwarm | crispwinter | cross_process_cp_130 | \ # contrasty_afternoon | contrasty_green | crispromance | crispwarm | crispwinter | cross_process_cp_130 | \
# cross_process_cp_14 | cross_process_cp_15 | cross_process_cp_16 | cross_proces s_cp_18 | cross_process_cp_3 | \ # cross_process_cp_14 | cross_process_cp_15 | cross_process_cp_16 | cross_proces s_cp_18 | cross_process_cp_3 | \
# cross_process_cp_4 | cross_process_cp_6 | crushin | cubicle_99 | d_o_1 | dark_ blues_in_sunlight | dark_green_02 | \ # cross_process_cp_4 | cross_process_cp_6 | crushin | cubicle_99 | d_o_1 | dark_ blues_in_sunlight | dark_green_02 | \
# dark_green_1 | dark_place_01 | date_39 | day_4nite | day_for_night | delicates # dark_green_1 | dark_place_01 | date_39 | day_4nite | day_for_night | deep | de
sen | denoiser_simple_40 | \ ep_blue | deep_dark_warm | \
# desert_gold_37 | directions_23 | django_25 | domingo_145 | dream_1 | dream_85 # deep_high_contrast | deep_teal_fade | deep_warm_fade | delicatessen | denoiser
| drop_green_tint_14 | dropblues | \ _simple_40 | desert_gold_37 | \
# earth_tone_boost | edgyember | elegance_38 | eterna_for_flog | expired_69 | ex # dimension | directions_23 | django_25 | domingo_145 | dream_1 | dream_85 | dro
pired_fade | expired_polaroid | \ p_green_tint_14 | dropblues | \
# extreme | fade | fade_to_green | faded | faded_47 | faded_alt | faded_analog | # earth_tone_boost | edgyember | elegance_38 | enchanted | eterna_for_flog | exp
faded_extreme | faded_print | \ ired_69 | expired_fade | \
# faded_retro_01 | faded_retro_02 | faded_vivid | fadedlook | fallcolors | faux_ # expired_polaroid | extreme | fade | fade_to_green | faded | faded_47 | faded_a
infrared | fgcinebasic | \ lt | faded_analog | faded_extreme | \
# fgcinebright | fgcinecold | fgcinedrama | fgcinetealorange_1 | fgcinetealorang # faded_green | faded_print | faded_retro_01 | faded_retro_02 | faded_vivid | fa
e_2 | fgcinevibrant | fgcinewarm | \ dedlook | fallcolors | \
# film_0987 | film_9879 | film_high_contrast | film_print_01 | film_print_02 | f # faux_infrared | fgcinebasic | fgcinebright | fgcinecold | fgcinedrama | fgcine
ilmic | flat_30 | foggynight | \ tealorange_1 | fgcinetealorange_2 | \
# folger_50 | french_comedy | frostedbeachpicnic | fuji_160c | fuji_160c_+ | fuj # fgcinevibrant | fgcinewarm | film_0987 | film_9879 | film_high_contrast | film
i_160c_++ | fuji_160c_- | \ _print_01 | film_print_02 | filmic | \
# fuji_3510_constlclip | fuji_3510_constlmap | fuji_3510_cuspclip | fuji_3513_co # flat_30 | flavin | foggynight | folger_50 | french_comedy | frosted | frostedb
nstlclip | fuji_3513_constlmap | \ eachpicnic | fuji_160c | \
# fuji_3513_cuspclip | fuji_400h | fuji_400h_+ | fuji_400h_++ | fuji_400h_- | fu # fuji_160c_+ | fuji_160c_++ | fuji_160c_- | fuji_3510_constlclip | fuji_3510_co
ji_800z | fuji_800z_+ | \ nstlmap | fuji_3510_cuspclip | \
# fuji_800z_++ | fuji_800z_- | fuji_astia_100_generic | fuji_astia_100f | fuji_f # fuji_3513_constlclip | fuji_3513_constlmap | fuji_3513_cuspclip | fuji_400h |
p-100c | fuji_fp-100c_+ | \ fuji_400h_+ | fuji_400h_++ | \
# fuji_fp-100c_++ | fuji_fp-100c_+++ | fuji_fp-100c_++_alt | fuji_fp-100c_- | fu # fuji_400h_- | fuji_800z | fuji_800z_+ | fuji_800z_++ | fuji_800z_- | fuji_asti
ji_fp-100c_-- | fuji_fp-100c_alt | \ a_100_generic | fuji_astia_100f | \
# fuji_fp-100c_cool | fuji_fp-100c_cool_+ | fuji_fp-100c_cool_++ | fuji_fp-100c_ # fuji_fp-100c | fuji_fp-100c_+ | fuji_fp-100c_++ | fuji_fp-100c_+++ | fuji_fp-1
cool_- | fuji_fp-100c_cool_-- | \ 00c_++_alt | fuji_fp-100c_- | \
# fuji_fp-100c_negative | fuji_fp-100c_negative_+ | fuji_fp-100c_negative_++ | f # fuji_fp-100c_-- | fuji_fp-100c_alt | fuji_fp-100c_cool | fuji_fp-100c_cool_+ |
uji_fp-100c_negative_+++ | \ fuji_fp-100c_cool_++ | \
# fuji_fp-100c_negative_++_alt | fuji_fp-100c_negative_- | fuji_fp-100c_negative # fuji_fp-100c_cool_- | fuji_fp-100c_cool_-- | fuji_fp-100c_negative | fuji_fp-1
_-- | fuji_fp-3000b | \ 00c_negative_+ | \
# fuji_fp-3000b_+ | fuji_fp-3000b_++ | fuji_fp-3000b_+++ | fuji_fp-3000b_- | fuj # fuji_fp-100c_negative_++ | fuji_fp-100c_negative_+++ | fuji_fp-100c_negative_+
i_fp-3000b_-- | fuji_fp-3000b_hc | \ +_alt | fuji_fp-100c_negative_- | \
# fuji_fp-3000b_negative | fuji_fp-3000b_negative_+ | fuji_fp-3000b_negative_++ # fuji_fp-100c_negative_-- | fuji_fp-3000b | fuji_fp-3000b_+ | fuji_fp-3000b_++
| fuji_fp-3000b_negative_+++ | \ | fuji_fp-3000b_+++ | \
# fuji_fp-3000b_negative_- | fuji_fp-3000b_negative_-- | fuji_fp-3000b_negative_ # fuji_fp-3000b_- | fuji_fp-3000b_-- | fuji_fp-3000b_hc | fuji_fp-3000b_negative
early | fuji_fp_100c | fuji_hdr | \ | fuji_fp-3000b_negative_+ | \
# fuji_neopan_1600 | fuji_neopan_1600_+ | fuji_neopan_1600_++ | fuji_neopan_1600 # fuji_fp-3000b_negative_++ | fuji_fp-3000b_negative_+++ | fuji_fp-3000b_negativ
_- | fuji_neopan_acros_100 | \ e_- | fuji_fp-3000b_negative_-- | \
# fuji_provia_100_generic | fuji_provia_100f | fuji_provia_400f | fuji_provia_40 # fuji_fp-3000b_negative_early | fuji_fp_100c | fuji_hdr | fuji_neopan_1600 | fu
0x | fuji_sensia_100 | \ ji_neopan_1600_+ | \
# fuji_superia_100 | fuji_superia_100_+ | fuji_superia_100_++ | fuji_superia_100 # fuji_neopan_1600_++ | fuji_neopan_1600_- | fuji_neopan_acros_100 | fuji_provia
_- | fuji_superia_1600 | \ _100_generic | fuji_provia_100f | \
# fuji_superia_1600_+ | fuji_superia_1600_++ | fuji_superia_1600_- | fuji_superi # fuji_provia_400f | fuji_provia_400x | fuji_sensia_100 | fuji_superia_100 | fuj
a_200 | fuji_superia_200_xpro | \ i_superia_100_+ | \
# fuji_superia_400 | fuji_superia_400_+ | fuji_superia_400_++ | fuji_superia_400 # fuji_superia_100_++ | fuji_superia_100_- | fuji_superia_1600 | fuji_superia_16
_- | fuji_superia_800 | \ 00_+ | fuji_superia_1600_++ | \
# fuji_superia_800_+ | fuji_superia_800_++ | fuji_superia_800_- | fuji_superia_h # fuji_superia_1600_- | fuji_superia_200 | fuji_superia_200_xpro | fuji_superia_
g_1600 | fuji_superia_reala_100 | \ 400 | fuji_superia_400_+ | \
# fuji_superia_x-tra_800 | fuji_velvia_100_generic | fuji_velvia_50 | fuji_xtran # fuji_superia_400_++ | fuji_superia_400_- | fuji_superia_800 | fuji_superia_800
s_iii_acros | \ _+ | fuji_superia_800_++ | \
# fuji_xtrans_iii_acros+g | fuji_xtrans_iii_acros+r | fuji_xtrans_iii_acros+ye | # fuji_superia_800_- | fuji_superia_hg_1600 | fuji_superia_reala_100 | fuji_supe
fuji_xtrans_iii_astia | \ ria_x-tra_800 | \
# fuji_xtrans_iii_classic_chrome | fuji_xtrans_iii_mono | fuji_xtrans_iii_mono+g # fuji_velvia_100_generic | fuji_velvia_50 | fuji_xtrans_iii_acros | fuji_xtrans
| fuji_xtrans_iii_mono+r | \ _iii_acros+g | \
# fuji_xtrans_iii_mono+ye | fuji_xtrans_iii_pro_neg_hi | fuji_xtrans_iii_pro_neg # fuji_xtrans_iii_acros+r | fuji_xtrans_iii_acros+ye | fuji_xtrans_iii_astia | f
_std | fuji_xtrans_iii_provia | \ uji_xtrans_iii_classic_chrome | \
# fuji_xtrans_iii_sepia | fuji_xtrans_iii_velvia | fusion_88 | futuristicbleak_1 # fuji_xtrans_iii_mono | fuji_xtrans_iii_mono+g | fuji_xtrans_iii_mono+r | fuji_
| futuristicbleak_2 | \ xtrans_iii_mono+ye | \
# futuristicbleak_3 | futuristicbleak_4 | golden | golden_bright | golden_fade | # fuji_xtrans_iii_pro_neg_hi | fuji_xtrans_iii_pro_neg_std | fuji_xtrans_iii_pro
golden_mono | \ via | fuji_xtrans_iii_sepia | \
# fuji_xtrans_iii_velvia | fusion_88 | futuristicbleak_1 | futuristicbleak_2 | f
uturisticbleak_3 | \
# futuristicbleak_4 | going_for_a_walk | golden | golden_bright | golden_fade |
golden_mono | \
# golden_night_softner_43 | golden_sony_37 | golden_vibrant | goldengate | goldf x_bright_spring_breeze | \ # golden_night_softner_43 | golden_sony_37 | golden_vibrant | goldengate | goldf x_bright_spring_breeze | \
# goldfx_bright_summer_heat | goldfx_hot_summer_heat | goldfx_perfect_sunset_01m in | goldfx_perfect_sunset_05min | \ # goldfx_bright_summer_heat | goldfx_hot_summer_heat | goldfx_perfect_sunset_01m in | goldfx_perfect_sunset_05min | \
# goldfx_perfect_sunset_10min | goldfx_spring_breeze | goldfx_summer_heat | gree # goldfx_perfect_sunset_10min | goldfx_spring_breeze | goldfx_summer_heat | good
n_15 | green_2025 | green_action | \ _morning | green_15 | green_2025 | \
# green_afternoon | green_blues | green_conflict | green_day_01 | green_day_02 | # green_action | green_afternoon | green_blues | green_conflict | green_day_01 |
green_g_09 | green_indoor | \ green_day_02 | green_g_09 | \
# green_light | green_mono | green_yellow | hackmanite | happyness_133 | harsh_d # green_indoor | green_light | green_mono | green_yellow | greenish_contrasty |
ay | harsh_sunset | helios | \ greenish_fade | greenish_fade_1 | \
# herderite | heulandite | hiddenite | highlights_protection | hilutite | hlg_1_ # hackmanite | happyness_133 | hard_teal_orange | harsh_day | harsh_sunset | hel
1 | hong_kong | horrorblue | \ ios | herderite | heulandite | \
# howlite | hydracore | hyla_68 | hypersthene | hypnosis | hypressen | ilford_de # hiddenite | highlights_protection | hilutite | hlg_1_1 | hong_kong | horrorblu
lta_100 | ilford_delta_3200 | \ e | howlite | hydracore | hyla_68 | \
# ilford_delta_3200_+ | ilford_delta_3200_++ | ilford_delta_3200_- | ilford_delt # hypersthene | hypnosis | hypressen | ilford_delta_100 | ilford_delta_3200 | il
a_400 | ilford_fp_4_plus_125 | \ ford_delta_3200_+ | \
# ilford_hp_5 | ilford_hp_5_+ | ilford_hp_5_++ | ilford_hp_5_- | ilford_hp_5_plu # ilford_delta_3200_++ | ilford_delta_3200_- | ilford_delta_400 | ilford_fp_4_pl
s_400 | ilford_hps_800 | \ us_125 | ilford_hp_5 | \
# ilford_pan_f_plus_50 | ilford_xp_2 | indoor_blue | industrial_33 | instantc | # ilford_hp_5_+ | ilford_hp_5_++ | ilford_hp_5_- | ilford_hp_5_plus_400 | ilford
justpeachy | \ _hps_800 | ilford_pan_f_plus_50 | \
# k_tone_vintage_kodachrome | killstreak | kodak_2383_constlclip | kodak_2383_co # ilford_xp_2 | indoor_blue | industrial_33 | instantc | justpeachy | k_tone_vin
nstlmap | kodak_2383_cuspclip | \ tage_kodachrome | kh_1 | kh_10 | \
# kodak_2393_constlclip | kodak_2393_constlmap | kodak_2393_cuspclip | kodak_bw_ # kh_2 | kh_3 | kh_4 | kh_5 | kh_6 | kh_7 | kh_8 | kh_9 | killstreak | kodak_238
400_cn | \ 3_constlclip | kodak_2383_constlmap | \
# kodak_2383_cuspclip | kodak_2393_constlclip | kodak_2393_constlmap | kodak_239
3_cuspclip | kodak_bw_400_cn | \
# kodak_e-100_gx_ektachrome_100 | kodak_ektachrome_100_vs | kodak_ektachrome_100 _vs_generic | kodak_ektar_100 | \ # kodak_e-100_gx_ektachrome_100 | kodak_ektachrome_100_vs | kodak_ektachrome_100 _vs_generic | kodak_ektar_100 | \
# kodak_elite_100_xpro | kodak_elite_chrome_200 | kodak_elite_chrome_400 | kodak _elite_color_200 | \ # kodak_elite_100_xpro | kodak_elite_chrome_200 | kodak_elite_chrome_400 | kodak _elite_color_200 | \
# kodak_elite_color_400 | kodak_elite_extracolor_100 | kodak_hie_hs_infra | koda k_kodachrome_200 | \ # kodak_elite_color_400 | kodak_elite_extracolor_100 | kodak_hie_hs_infra | koda k_kodachrome_200 | \
# kodak_kodachrome_25 | kodak_kodachrome_64 | kodak_kodachrome_64_generic | koda k_portra_160 | kodak_portra_160_+ | \ # kodak_kodachrome_25 | kodak_kodachrome_64 | kodak_kodachrome_64_generic | koda k_portra_160 | kodak_portra_160_+ | \
# kodak_portra_160_++ | kodak_portra_160_- | kodak_portra_160_nc | kodak_portra_ 160_nc_+ | kodak_portra_160_nc_++ | \ # kodak_portra_160_++ | kodak_portra_160_- | kodak_portra_160_nc | kodak_portra_ 160_nc_+ | kodak_portra_160_nc_++ | \
# kodak_portra_160_nc_- | kodak_portra_160_vc | kodak_portra_160_vc_+ | kodak_po rtra_160_vc_++ | \ # kodak_portra_160_nc_- | kodak_portra_160_vc | kodak_portra_160_vc_+ | kodak_po rtra_160_vc_++ | \
# kodak_portra_160_vc_- | kodak_portra_400 | kodak_portra_400_+ | kodak_portra_4 00_++ | kodak_portra_400_- | \ # kodak_portra_160_vc_- | kodak_portra_400 | kodak_portra_400_+ | kodak_portra_4 00_++ | kodak_portra_400_- | \
# kodak_portra_400_nc | kodak_portra_400_nc_+ | kodak_portra_400_nc_++ | kodak_p ortra_400_nc_- | \ # kodak_portra_400_nc | kodak_portra_400_nc_+ | kodak_portra_400_nc_++ | kodak_p ortra_400_nc_- | \
# kodak_portra_400_uc | kodak_portra_400_uc_+ | kodak_portra_400_uc_++ | kodak_p ortra_400_uc_- | \ # kodak_portra_400_uc | kodak_portra_400_uc_+ | kodak_portra_400_uc_++ | kodak_p ortra_400_uc_- | \
# kodak_portra_400_vc | kodak_portra_400_vc_+ | kodak_portra_400_vc_++ | kodak_p ortra_400_vc_- | kodak_portra_800 | \ # kodak_portra_400_vc | kodak_portra_400_vc_+ | kodak_portra_400_vc_++ | kodak_p ortra_400_vc_- | kodak_portra_800 | \
skipping to change at line 1755 skipping to change at line 1767
# lc_10 | lc_2 | lc_3 | lc_4 | lc_5 | lc_6 | lc_7 | lc_8 | lc_9 | lenox_340 | li fe_giving_tree | light_blown | lomo | \ # lc_10 | lc_2 | lc_3 | lc_4 | lc_5 | lc_6 | lc_7 | lc_8 | lc_9 | lenox_340 | li fe_giving_tree | light_blown | lomo | \
# lomography_redscale_100 | lomography_x-pro_slide_200 | low_contrast_blue | low _key_01 | lucky_64 | \ # lomography_redscale_100 | lomography_x-pro_slide_200 | low_contrast_blue | low _key_01 | lucky_64 | \
# lushgreensummer | magenta_day | magenta_day_01 | magenta_dream | magenta_yello w | magentacoffee | matrix | \ # lushgreensummer | magenta_day | magenta_day_01 | magenta_dream | magenta_yello w | magentacoffee | matrix | \
# mckinnon_75 | memories | metropolis | milo_5 | minimalistcaffeination | modern _film | mono_tinted | monochrome_1 | \ # mckinnon_75 | memories | metropolis | milo_5 | minimalistcaffeination | modern _film | mono_tinted | monochrome_1 | \
# monochrome_2 | moody_1 | moody_10 | moody_2 | moody_3 | moody_4 | moody_5 | mo ody_6 | moody_7 | moody_8 | moody_9 | \ # monochrome_2 | moody_1 | moody_10 | moody_2 | moody_3 | moody_4 | moody_5 | mo ody_6 | moody_7 | moody_8 | moody_9 | \
# moonlight | moonlight_01 | moonrise | morning_6 | morroco_16 | mostly_blue | m oviz_1 | moviz_10 | moviz_11 | \ # moonlight | moonlight_01 | moonrise | morning_6 | morroco_16 | mostly_blue | m oviz_1 | moviz_10 | moviz_11 | \
# moviz_12 | moviz_13 | moviz_14 | moviz_15 | moviz_16 | moviz_17 | moviz_18 | m oviz_19 | moviz_2 | moviz_20 | \ # moviz_12 | moviz_13 | moviz_14 | moviz_15 | moviz_16 | moviz_17 | moviz_18 | m oviz_19 | moviz_2 | moviz_20 | \
# moviz_21 | moviz_22 | moviz_23 | moviz_24 | moviz_25 | moviz_26 | moviz_27 | m oviz_28 | moviz_29 | moviz_3 | \ # moviz_21 | moviz_22 | moviz_23 | moviz_24 | moviz_25 | moviz_26 | moviz_27 | m oviz_28 | moviz_29 | moviz_3 | \
# moviz_30 | moviz_31 | moviz_32 | moviz_33 | moviz_34 | moviz_35 | moviz_36 | m oviz_37 | moviz_38 | moviz_39 | \ # moviz_30 | moviz_31 | moviz_32 | moviz_33 | moviz_34 | moviz_35 | moviz_36 | m oviz_37 | moviz_38 | moviz_39 | \
# moviz_4 | moviz_40 | moviz_41 | moviz_42 | moviz_43 | moviz_44 | moviz_45 | mo viz_46 | moviz_47 | moviz_48 | \ # moviz_4 | moviz_40 | moviz_41 | moviz_42 | moviz_43 | moviz_44 | moviz_45 | mo viz_46 | moviz_47 | moviz_48 | \
# moviz_5 | moviz_6 | moviz_7 | moviz_8 | moviz_9 | mute_shift | muted_01 | mute # moviz_5 | moviz_6 | moviz_7 | moviz_8 | moviz_9 | mute_shift | muted_01 | mute
d_fade | mysticpurplesunset | \ d_fade | mysticpurplesunset | nah | \
# natural_vivid | nemesis | neon_770 | newspaper | night_01 | night_blade_4 | ni # natural_vivid | nemesis | neon_770 | neutral_teal_orange | neutral_warm_fade |
ght_king_141 | night_spy | \ newspaper | night_01 | \
# nightfromday | nostalgiahoney | nostalgic | nw-1 | nw-10 | nw-2 | nw-3 | nw-4 # night_blade_4 | night_king_141 | night_spy | nightfromday | nostalgiahoney | n
| nw-5 | nw-6 | nw-7 | nw-8 | nw-9 | \ ostalgic | nw-1 | nw-10 | nw-2 | \
# old_west | only_red | only_red_and_blue | operation_yellow | orange_dark_4 | o # nw-3 | nw-4 | nw-5 | nw-6 | nw-7 | nw-8 | nw-9 | old_west | once_upon_a_time |
range_dark_7 | orange_dark_look | \ only_red | only_red_and_blue | \
# orange_tone | orange_underexposed | oranges | paladin | paladin_1875 | pasaden # operation_yellow | orange_dark_4 | orange_dark_7 | orange_dark_look | orange_t
a_21 | pink_fade | pitaya_15 | \ one | orange_underexposed | oranges | \
# polaroid_664 | polaroid_665 | polaroid_665_+ | polaroid_665_++ | polaroid_665_ # paladin | paladin_1875 | pasadena_21 | passing_by | pink_fade | pitaya_15 | po
- | polaroid_665_-- | \ laroid_664 | polaroid_665 | \
# polaroid_665_negative | polaroid_665_negative_+ | polaroid_665_negative_- | po # polaroid_665_+ | polaroid_665_++ | polaroid_665_- | polaroid_665_-- | polaroid
laroid_665_negative_hc | \ _665_negative | \
# polaroid_667 | polaroid_669 | polaroid_669_+ | polaroid_669_++ | polaroid_669_ # polaroid_665_negative_+ | polaroid_665_negative_- | polaroid_665_negative_hc |
+++ | polaroid_669_- | \ polaroid_667 | polaroid_669 | \
# polaroid_669_-- | polaroid_669_cold | polaroid_669_cold_+ | polaroid_669_cold_ # polaroid_669_+ | polaroid_669_++ | polaroid_669_+++ | polaroid_669_- | polaroi
- | polaroid_669_cold_-- | \ d_669_-- | polaroid_669_cold | \
# polaroid_672 | polaroid_690 | polaroid_690_+ | polaroid_690_++ | polaroid_690_ # polaroid_669_cold_+ | polaroid_669_cold_- | polaroid_669_cold_-- | polaroid_67
- | polaroid_690_-- | \ 2 | polaroid_690 | polaroid_690_+ | \
# polaroid_690_cold | polaroid_690_cold_+ | polaroid_690_cold_++ | polaroid_690_ # polaroid_690_++ | polaroid_690_- | polaroid_690_-- | polaroid_690_cold | polar
cold_- | polaroid_690_cold_-- | \ oid_690_cold_+ | \
# polaroid_690_warm | polaroid_690_warm_+ | polaroid_690_warm_++ | polaroid_690_ # polaroid_690_cold_++ | polaroid_690_cold_- | polaroid_690_cold_-- | polaroid_6
warm_- | polaroid_690_warm_-- | \ 90_warm | polaroid_690_warm_+ | \
# polaroid_polachrome | polaroid_px-100uv+_cold | polaroid_px-100uv+_cold_+ | po # polaroid_690_warm_++ | polaroid_690_warm_- | polaroid_690_warm_-- | polaroid_p
laroid_px-100uv+_cold_++ | \ olachrome | polaroid_px-100uv+_cold | \
# polaroid_px-100uv+_cold_+++ | polaroid_px-100uv+_cold_- | polaroid_px-100uv+_c # polaroid_px-100uv+_cold_+ | polaroid_px-100uv+_cold_++ | polaroid_px-100uv+_co
old_-- | polaroid_px-100uv+_warm | \ ld_+++ | polaroid_px-100uv+_cold_- | \
# polaroid_px-100uv+_warm_+ | polaroid_px-100uv+_warm_++ | polaroid_px-100uv+_wa # polaroid_px-100uv+_cold_-- | polaroid_px-100uv+_warm | polaroid_px-100uv+_warm
rm_+++ | polaroid_px-100uv+_warm_- | \ _+ | polaroid_px-100uv+_warm_++ | \
# polaroid_px-100uv+_warm_-- | polaroid_px-680 | polaroid_px-680_+ | polaroid_px # polaroid_px-100uv+_warm_+++ | polaroid_px-100uv+_warm_- | polaroid_px-100uv+_w
-680_++ | polaroid_px-680_- | \ arm_-- | polaroid_px-680 | \
# polaroid_px-680_-- | polaroid_px-680_cold | polaroid_px-680_cold_+ | polaroid_ # polaroid_px-680_+ | polaroid_px-680_++ | polaroid_px-680_- | polaroid_px-680_-
px-680_cold_++ | \ - | polaroid_px-680_cold | \
# polaroid_px-680_cold_++_alt | polaroid_px-680_cold_- | polaroid_px-680_cold_-- # polaroid_px-680_cold_+ | polaroid_px-680_cold_++ | polaroid_px-680_cold_++_alt
| polaroid_px-680_warm | \ | polaroid_px-680_cold_- | \
# polaroid_px-680_warm_+ | polaroid_px-680_warm_++ | polaroid_px-680_warm_- | po # polaroid_px-680_cold_-- | polaroid_px-680_warm | polaroid_px-680_warm_+ | pola
laroid_px-680_warm_-- | \ roid_px-680_warm_++ | \
# polaroid_px-70 | polaroid_px-70_+ | polaroid_px-70_++ | polaroid_px-70_+++ | p # polaroid_px-680_warm_- | polaroid_px-680_warm_-- | polaroid_px-70 | polaroid_p
olaroid_px-70_- | polaroid_px-70_-- | \ x-70_+ | polaroid_px-70_++ | \
# polaroid_px-70_cold | polaroid_px-70_cold_+ | polaroid_px-70_cold_++ | polaroi # polaroid_px-70_+++ | polaroid_px-70_- | polaroid_px-70_-- | polaroid_px-70_col
d_px-70_cold_- | \ d | polaroid_px-70_cold_+ | \
# polaroid_px-70_cold_-- | polaroid_px-70_warm | polaroid_px-70_warm_+ | polaroi # polaroid_px-70_cold_++ | polaroid_px-70_cold_- | polaroid_px-70_cold_-- | pola
d_px-70_warm_++ | \ roid_px-70_warm | \
# polaroid_px-70_warm_- | polaroid_px-70_warm_-- | polaroid_time_zero_expired | # polaroid_px-70_warm_+ | polaroid_px-70_warm_++ | polaroid_px-70_warm_- | polar
polaroid_time_zero_expired_+ | \ oid_px-70_warm_-- | \
# polaroid_time_zero_expired_++ | polaroid_time_zero_expired_- | polaroid_time_z # polaroid_time_zero_expired | polaroid_time_zero_expired_+ | polaroid_time_zero
ero_expired_-- | \ _expired_++ | \
# polaroid_time_zero_expired_--- | polaroid_time_zero_expired_cold | polaroid_ti # polaroid_time_zero_expired_- | polaroid_time_zero_expired_-- | polaroid_time_z
me_zero_expired_cold_- | \ ero_expired_--- | \
# polaroid_time_zero_expired_cold_-- | polaroid_time_zero_expired_cold_--- | por # polaroid_time_zero_expired_cold | polaroid_time_zero_expired_cold_- | polaroid
trait_1 | portrait_10 | portrait_2 | \ _time_zero_expired_cold_-- | \
# portrait_3 | portrait_4 | portrait_5 | portrait_6 | portrait_7 | portrait_8 | # polaroid_time_zero_expired_cold_--- | portrait_1 | portrait_10 | portrait_2 |
portrait_9 | progressen | \ portrait_3 | portrait_4 | \
# protect_highlights_01 | prussian_blue | pseudogrey | purple | purple_2 | red_a # portrait_5 | portrait_6 | portrait_7 | portrait_8 | portrait_9 | progressen |
fternoon_01 | red_day_01 | \ protect_highlights_01 | \
# red_dream_01 | redblueyellow | reds | reds_oranges_yellows | reeve_38 | remy_2 # prussian_blue | pseudogrey | purple | purple_2 | red_afternoon_01 | red_day_01
4 | rest_33 | retro | \ | red_dream_01 | redblueyellow | \
# retro_brown_01 | retro_magenta_01 | retro_summer_3 | retro_yellow_01 | rollei_ # reds | reds_oranges_yellows | reeve_38 | remy_24 | rest_33 | retro | retro_bro
ir_400 | rollei_ortho_25 | \ wn_01 | retro_magenta_01 | \
# rollei_retro_100_tonal | rollei_retro_80s | rotate_muted | rotate_vibrant | ro # retro_summer_3 | retro_yellow_01 | rollei_ir_400 | rollei_ortho_25 | rollei_re
tated | rotated_crush | \ tro_100_tonal | rollei_retro_80s | \
# saturated_blue | saving_private_damon | science_fiction | seringe_4 | serpent # rotate_muted | rotate_vibrant | rotated | rotated_crush | saturated_blue | sav
| seventies_magazine | \ ing_private_damon | science_fiction | \
# shadow_king_39 | skin_tones | smart_contrast | smokey | smooth_cromeish | smoo # serenity | seringe_4 | serpent | seventies_magazine | shadow_king_39 | shine |
th_fade | soft_fade | softwarming | \ skin_tones | smart_contrast | \
# solarized_color | solarized_color_2 | springmorning | sprocket_231 | spy_29 | # smokey | smooth_clear | smooth_cromeish | smooth_fade | smooth_green_orange |
street | studio_skin_tone_shaper | \ smooth_sailing | smooth_teal_orange | \
# subtle_blue | subtle_green | subtle_yellow | summer | summer_alt | sunny | sun # soft_fade | softwarming | solarized_color | solarized_color_2 | springmorning
ny_alt | sunny_rich | sunny_warm | \ | sprocket_231 | spy_29 | street | \
# super_warm | super_warm_rich | sutro_fx | sweet_bubblegum | sweet_gelatto | ta # studio_skin_tone_shaper | subtle_blue | subtle_green | subtle_yellow | summer
iga | tarraco | teal_moonlight | \ | summer_alt | sunny | sunny_alt | \
# tealmagentagold | tealorange | tealorange_1 | tealorange_2 | tealorange_3 | te # sunny_rich | sunny_warm | super_warm | super_warm_rich | sutro_fx | sweet_bubb
chnicalfx_backlight_filter | \ legum | sweet_gelatto | taiga | \
# teigen_28 | tensiongreen_1 | tensiongreen_2 | tensiongreen_3 | tensiongreen_4 # tarraco | teal_fade | teal_moonlight | tealmagentagold | tealorange | tealoran
| terra_4 | the_matrices | \ ge_1 | tealorange_2 | tealorange_3 | \
# thriller_2 | toastedgarden | trent_18 | true_colors_8 | turkiest_42 | tweed_71 # technicalfx_backlight_filter | teigen_28 | tensiongreen_1 | tensiongreen_2 | t
| unknown | uzbek_bukhara | \ ensiongreen_3 | tensiongreen_4 | \
# uzbek_marriage | uzbek_samarcande | velvetia | vibrant | vibrant_alien | vibra # terra_4 | the_matrices | thriller_2 | toastedgarden | trent_18 | true_colors_8
nt_contrast | vibrant_cromeish | \ | turkiest_42 | tweed_71 | \
# ultra_water | undeniable | undeniable_2 | unknown | urban_cowboy | uzbek_bukha
ra | uzbek_marriage | \
# uzbek_samarcande | velvetia | very_warm_greenish | vibrant | vibrant_alien | v
ibrant_contrast | vibrant_cromeish | \
# victory | vintage | vintage_163 | vintage_alt | vintage_brighter | vintage_chr ome | vintage_warmth_1 | vireo_37 | \ # victory | vintage | vintage_163 | vintage_alt | vintage_brighter | vintage_chr ome | vintage_warmth_1 | vireo_37 | \
# warm | warm_highlight | warm_vintage | warm_yellow | whiter_whites | winterlig # warm | warm_dark_contrasty | warm_fade | warm_fade_1 | warm_highlight | warm_n
hthouse | wooden_gold_20 | \ eutral | warm_sunset_red | \
# yellow_55b | yellow_film_01 | yellowstone | zed_32 | zeke_39 | zilverfx_bw_sol # warm_teal | warm_vintage | warm_yellow | well_see | whiter_whites | winterligh
arization | zilverfx_infrared | \ thouse | wipe | wooden_gold_20 | \
# zilverfx_vintage_bw } # yellow_55b | yellow_film_01 | yellowstone | you_can_do_it | zed_32 | zeke_39 |
zilverfx_bw_solarization | \
# zilverfx_infrared | zilverfx_vintage_bw }
#@cli : Default values: 'resolution=48' and 'cut_and_round=1'. #@cli : Default values: 'resolution=48' and 'cut_and_round=1'.
#@cli : $ clut summer #@cli : $ clut summer
clut : check "isnum(${2=48}) && $2>0 && isbool(${3=1})" clut : check "isnum(${2=48}) && $2>0 && isbool(${3=1})"
to_clutname "$1" name=${} l[] to_clutname "$1" name=${} l[]
e[^-1] "Input CLUT '"$name"' with resolution $2." e[^-1] "Input CLUT '"$name"' with resolution $2."
path_clut=${-path_cache} path_clut=${-path_cache}
if isfile(['{/${path_clut}clut_$name.cimgz}']) i ${path_clut}clut_$name.cimg z fi if isfile(['{/${path_clut}clut_$name.cimgz}']) i ${path_clut}clut_$name.cimg z fi
if $!"!=1 || w<$2 || h<$2 || d<$2" # Decompression needed if $!"!=1 || w<$2 || h<$2 || d<$2" # Decompression needed
rm rm
if narg($GMIC_SYSTEM_PATH) g_path_unix=$GMIC_SYSTEM_PATH if narg($GMIC_SYSTEM_PATH) g_path_unix=$GMIC_SYSTEM_PATH
skipping to change at line 3946 skipping to change at line 3961
copy(line[0],line[11],size(line) - 11); copy(line[0],line[11],size(line) - 11);
dmax[0] = stov(line); dmax[0] = stov(line);
ind = find(line,_' '); ind = find(line,_' ');
copy(line[0],line[ind + 1],size(line) - ind); copy(line[0],line[ind + 1],size(line) - ind);
dmax[1] = stov(line); dmax[1] = stov(line);
ind = find(line,_' '); ind = find(line,_' ');
copy(line[0],line[ind + 1],size(line) - ind); copy(line[0],line[ind + 1],size(line) - ind);
dmax[2] = stov(line); dmax[2] = stov(line);
):( ):(
val = stov(line); val = stov(line);
val>=0?do ( !isnan(val)?do (
i[#0,target++] = val; i[#0,target++] = val;
ind = find(line,_' '); ind = find(line,_' ');
ind<0?break(); ind<0?break();
copy(line[0],line[ind + 1],size(line) - ind); copy(line[0],line[ind + 1],size(line) - ind);
val = stov(line); val = stov(line);
,_(while); val>=0); ,_(while); !isnan(val));
); );
); );
[dmin,dmax];"} [dmin,dmax];"}
k[0] k[0]
permute yzcx permute yzcx
if [$range]!=[0,0,0,1,1,1] if [$range]!=[0,0,0,1,1,1]
f "begin( f "begin(
range = ["$range"]; range = ["$range"];
dmin = range[0,3]; dmin = range[0,3];
skipping to change at line 4122 skipping to change at line 4137
_gmic_s="$?" v + _$0 $* _gmic_s="$?" v + _$0 $*
_outputp : skip ${1="_"} _outputp : skip ${1="_"}
if $!>1 e[0--4] "Output image"$_gmic_s" as their initial locations, prefixed b y '$1'." if $!>1 e[0--4] "Output image"$_gmic_s" as their initial locations, prefixed b y '$1'."
else e[0--4] "Output image"$_gmic_s" as its initial location, prefixed by '$1' ." else e[0--4] "Output image"$_gmic_s" as its initial location, prefixed by '$1' ."
fi fi
repeat $! o[$>] {$>,f}$1{$>,b}.{$>,x} done repeat $! o[$>] {$>,f}$1{$>,b}.{$>,x} done
#@cli ow : eq. to 'outputw'. #@cli ow : eq. to 'outputw'.
ow : ow :
_gmic_s="$?" v + _outputw v _gmic_s="$?" v + _outputw
#@cli outputw #@cli outputw
#@cli : Output selected images by overwriting their original location. #@cli : Output selected images by overwriting their original location.
#@cli : (eq. to 'ow'). #@cli : (eq. to 'ow').
outputw : outputw :
_gmic_s="$?" v + _$0 $* _gmic_s="$?" v + _$0 $*
_outputw : _outputw :
if $!>1 e[0--4] "Output image"$_gmic_s" as their initial location." if $!>1 e[0--4] "Output image"$_gmic_s" as their initial location."
else e[0--4] "Output image"$_gmic_s" as its initial location." else e[0--4] "Output image"$_gmic_s" as its initial location."
skipping to change at line 5015 skipping to change at line 5030
done done
html="<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n"\ html="<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n"\
" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n\n"\ " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n\n"\
"<!--#include file=\"header.html\" -->\n\n"\ "<!--#include file=\"header.html\" -->\n\n"\
"<link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.12.1/themes/bas e/jquery-ui.css\">\n"\ "<link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.12.1/themes/bas e/jquery-ui.css\">\n"\
"<script src=\"https://code.jquery.com/jquery-1.12.4.js\"></script>\n"\ "<script src=\"https://code.jquery.com/jquery-1.12.4.js\"></script>\n"\
"<script src=\"https://code.jquery.com/ui/1.12.1/jquery-ui.js\"></scrip t>\n\n"\ "<script src=\"https://code.jquery.com/ui/1.12.1/jquery-ui.js\"></scrip t>\n\n"\
"<div id=\"bloc_option\"><div id=\"top_vert\"><div id=\"text_top\">Imag e gallery</div></div>\n"\ "<div id=\"bloc_option\"><div id=\"top_vert\"><div id=\"text_top\">Imag e gallery</div></div>\n"\
"<div id=\"center\"><div id=\"text_centre_intro\">\n"\ "<div id=\"center\"><div id=\"text_centre_intro\">\n"\
"This gallery gives a quick overview of the kind of features and generi "<p>This gallery gives a quick overview of the kind of features and gen
c filters available in the "\ eric filters available in the "\
"<b><font color=\"#000066\">G\47MIC</font></b> open-source image proces "<b><font color=\"#000066\">G\47MIC</font></b> open-source image proces
sing framework.<br/>\n"\ sing framework.</p>\n"\
"All the images below have been processed by the CLI interface "\ "<p>All the images below have been processed by the CLI interface "\
"<tt><a href=\"documentation.shtml\">gmic</a></tt>\n"\ "<tt><a href=\"documentation.shtml\">gmic</a></tt>\n"\
" of <b><font color=\"#000066\">G\47MIC</font></b>, from a set of init ial 2D color images.\n"\ " of <b><font color=\"#000066\">G\47MIC</font></b>, from a set of init ial 2D color images.\n"\
"Click on an image to enlarge it and display the <b><font color=\"#0000 66\">G\47MIC</font></b> command-line "\ "Click on an image to enlarge it and display the <b><font color=\"#0000 66\">G\47MIC</font></b> command-line "\
"used for the processing (<i>note: to reproduce this, you may have to e scape some characters, "\ "used for the processing (<i>note: to reproduce this, you may have to e scape some characters, "\
"according to the type of shell you use!</i>).<br/>\n"\ "according to the type of shell you use!</i>).</p>\n"\
"Remember, <b><font color=\"#000066\">G\47MIC</font></b> lets you defin "<p>Remember, <b><font color=\"#000066\">G\47MIC</font></b> lets you de
e your own image pipelines through\n"\ fine your own image pipelines "\
"through\n"\
"custom <a href=\"https://gmic.eu/gmic_stdlib.gmic\">command files</a>. \n"\ "custom <a href=\"https://gmic.eu/gmic_stdlib.gmic\">command files</a>. \n"\
"Your custom filters can be easily added afterwards in the plug-in for "\ "Your custom filters can be easily added afterwards in the plug-in for "\
"<a href=\"http://www.gimp.org\">GIMP</a> or "\ "<a href=\"http://www.gimp.org\">GIMP</a> or "\
"<a href=\"http://www.krita.org\">Krita</a>.</br>\n\n"\ "<a href=\"http://www.krita.org\">Krita</a>.</p>\n\n"\
"For more details, visit the <a href=\"https://gmic.eu/tutorial\">tutor "<p>For more details, visit the <a href=\"https://gmic.eu/tutorial\">tu
ial pages</a> as well as the "\ torial pages</a> as well as the "\
"<a href=\"https://gmic.eu/reference.shtml\">technical reference</a> to get a full documentation on this "\ "<a href=\"https://gmic.eu/reference.shtml\">technical reference</a> to get a full documentation on this "\
"software.\n"\ "software.\n"\
"<br/><br/>\n<div id=\"menu\">\n" "</p>\n<div id=\"menu\">\n"
html_menu="<font size=\"-1\"><table cellspacing=\"0\" cellpadding=\"4\" bord er=\"1\" align=\"center\"><tr>\n"\ html_menu="<font size=\"-1\"><table cellspacing=\"0\" cellpadding=\"4\" bord er=\"1\" align=\"center\"><tr>\n"\
$td_arrays"<a href=\"arrays.shtml#menu\">Arrays &amp; Frames</a></td>"\ $td_arrays"<a href=\"arrays.shtml#menu\">Arrays &amp; Frames</a></td>"\
$td_artistic"<a href=\"artistic.shtml#menu\">Artistic</a></td>"\ $td_artistic"<a href=\"artistic.shtml#menu\">Artistic</a></td>"\
$td_blackandwhite"<a href=\"blackandwhite.shtml#menu\">B&amp;W</a></td> "\ $td_blackandwhite"<a href=\"blackandwhite.shtml#menu\">B&amp;W</a></td> "\
$td_colors"<a href=\"colors.shtml#menu\">Colors</a></td>"\ $td_colors"<a href=\"colors.shtml#menu\">Colors</a></td>"\
$td_deformations"<a href=\"deformations.shtml#menu\">Deformations</a></ td>"\ $td_deformations"<a href=\"deformations.shtml#menu\">Deformations</a></ td>"\
$td_filtering"<a href=\"filtering.shtml#menu\">Filtering</a></td>"\ $td_filtering"<a href=\"filtering.shtml#menu\">Filtering</a></td>"\
$td_patterns"<a href=\"patterns.shtml#menu\">Patterns</a></td>"\ $td_patterns"<a href=\"patterns.shtml#menu\">Patterns</a></td>"\
$td_3drendering"<a href=\"3drendering.shtml#menu\">3D Rendering</a></td >"\ $td_3drendering"<a href=\"3drendering.shtml#menu\">3D Rendering</a></td >"\
skipping to change at line 5375 skipping to change at line 5391
o raw:$filename,uchar o raw:$filename,uchar
# Function that updates filters definitions on the G'MIC web server. # Function that updates filters definitions on the G'MIC web server.
# It sorts and merges filters from all available sources, and save # It sorts and merges filters from all available sources, and save
# a single update file on the G'MIC server. It also print on the standard # a single update file on the G'MIC server. It also print on the standard
# output (stdout), the list of available filters. # output (stdout), the list of available filters.
update_server : update_server :
use_vt100 use_vt100
# Promote cool testing filters to main filter tree. # Promote cool testing filters to main filter tree.
_update_server_move[] "/Testing/Afre/Clean~Text","/Repair"
_update_server_move[] "/Testing/Garagecoder/Anti~Alias","/Repair" _update_server_move[] "/Testing/Garagecoder/Anti~Alias","/Repair"
_update_server_move[] "/Testing/Garagecoder/Aurora","/Artistic" _update_server_move[] "/Testing/Garagecoder/Aurora","/Artistic"
_update_server_move[] "/Testing/Garagecoder/Auto~Balance","/Colors" _update_server_move[] "/Testing/Garagecoder/Auto~Balance","/Colors"
_update_server_move[] "/Testing/Garagecoder/Compression~Blur","/Repair" _update_server_move[] "/Testing/Garagecoder/Compression~Blur","/Repair"
_update_server_move[] "/Testing/Garagecoder/Despeckle","/Repair" _update_server_move[] "/Testing/Garagecoder/Despeckle","/Repair"
_update_server_move[] "/Testing/Garagecoder/Emboss","/Black~&amp;~White" _update_server_move[] "/Testing/Garagecoder/Emboss","/Black~&amp;~White"
_update_server_move[] "/Testing/Garagecoder/HSL~Adjustment","/Colors" _update_server_move[] "/Testing/Garagecoder/HSL~Adjustment","/Colors"
_update_server_move[] "/Testing/Garagecoder/HSV~Select","/Colors" _update_server_move[] "/Testing/Garagecoder/HSV~Select","/Colors"
_update_server_move[] "/Testing/Garagecoder/JPEG~Smooth","/Repair" _update_server_move[] "/Testing/Garagecoder/JPEG~Smooth","/Repair"
_update_server_move[] "/Testing/Garagecoder/Normalize~Brightness","/Colors" _update_server_move[] "/Testing/Garagecoder/Normalize~Brightness","/Colors"
skipping to change at line 5403 skipping to change at line 5420
_update_server_move[] "/Testing/Gmic~Tutorials/Hedcut~(Experimental)","/Patter ns" _update_server_move[] "/Testing/Gmic~Tutorials/Hedcut~(Experimental)","/Patter ns"
_update_server_move[] "/Testing/Iain~Fergusson/Constrained~Sharpen","/Details" _update_server_move[] "/Testing/Iain~Fergusson/Constrained~Sharpen","/Details"
_update_server_move[] "/Testing/Iain~Fergusson/Easy~Skin~Retouch","/Details" _update_server_move[] "/Testing/Iain~Fergusson/Easy~Skin~Retouch","/Details"
_update_server_move[] "/Testing/Iain~Fergusson/Moire~Removal","/Repair" _update_server_move[] "/Testing/Iain~Fergusson/Moire~Removal","/Repair"
_update_server_move[] "/Testing/Iain~Fergusson/Halftone~Shapes","/Patterns" _update_server_move[] "/Testing/Iain~Fergusson/Halftone~Shapes","/Patterns"
_update_server_move[] "/Testing/Iain~Fergusson/Simple~Local~Contrast","/Detail s" _update_server_move[] "/Testing/Iain~Fergusson/Simple~Local~Contrast","/Detail s"
_update_server_move[] "/Testing/Iain~Fergusson/Turbulent~Halftone","/Patterns" _update_server_move[] "/Testing/Iain~Fergusson/Turbulent~Halftone","/Patterns"
_update_server_move[] "/Testing/Joan~Rake/Artistic/Ultrawarp++++","/Degradatio ns" _update_server_move[] "/Testing/Joan~Rake/Artistic/Ultrawarp++++","/Degradatio ns"
_update_server_move[] "/Testing/J&#233;J&#233;/Rays","/Patterns" _update_server_move[] "/Testing/J&#233;J&#233;/Rays","/Patterns"
_update_server_move[] "/Testing/Naggobot/Blockism","/Artistic" _update_server_move[] "/Testing/Naggobot/Blockism","/Artistic"
_update_server_move[] "/Testing/Reptorian/Fragment~Blur","/Degradations"
_update_server_move[] "/Testing/Reptorian/Kaleidoscope~[Polar]","/Deformations
"
_update_server_move[] "/Testing/Reptorian/Logarithmic~Distortion","/Deformatio
ns"
_update_server_move[] "/Testing/Reptorian/Nebulous","/Rendering"
_update_server_move[] "/Testing/Samj/Arrays~&amp;~Tiles/Annular~Steiner~Chain~ Round~Tile","/Arrays~&amp;~Tiles" _update_server_move[] "/Testing/Samj/Arrays~&amp;~Tiles/Annular~Steiner~Chain~ Round~Tile","/Arrays~&amp;~Tiles"
_update_server_move[] "/Testing/Samj/Arrays~&amp;~Tiles/Reptile","/Patterns" _update_server_move[] "/Testing/Samj/Arrays~&amp;~Tiles/Reptile","/Patterns"
_update_server_move[] "/Testing/Samj/Artistic/Anguish","/Artistic" _update_server_move[] "/Testing/Samj/Artistic/Anguish","/Artistic"
_update_server_move[] "/Testing/Samj/Artistic/Chalk~It~Up","/Artistic" _update_server_move[] "/Testing/Samj/Artistic/Chalk~It~Up","/Artistic"
_update_server_move[] "/Testing/Samj/Artistic/Paint~Daub","/Artistic" _update_server_move[] "/Testing/Samj/Artistic/Paint~Daub","/Artistic"
# _update_server_move[] "/Testing/Samj/Artistic/Skeletik","/Artistic" # _update_server_move[] "/Testing/Samj/Artistic/Skeletik","/Artistic"
_update_server_move[] "/Testing/Samj/Patterns/Denim","/Patterns" _update_server_move[] "/Testing/Samj/Patterns/Denim","/Patterns"
_update_server_move[] "/Testing/Samj/Patterns/Soft~Random~Shades","/Patterns" _update_server_move[] "/Testing/Samj/Patterns/Soft~Random~Shades","/Patterns"
_update_server_move[] "/Testing/Samj/Rendering/Pythagoras~Tree","/Rendering" _update_server_move[] "/Testing/Samj/Rendering/Pythagoras~Tree","/Rendering"
_update_server_move[] "/Testing/Samj/Rendering/Snowflake~2","/Rendering" _update_server_move[] "/Testing/Samj/Rendering/Snowflake~2","/Rendering"
skipping to change at line 5466 skipping to change at line 5487
load_gmic ${HOME}/work/src/gmic-community/include/iain_fergusson.gmic load_gmic ${HOME}/work/src/gmic-community/include/iain_fergusson.gmic
load_gmic ${HOME}/work/src/gmic-community/include/james_prichard.gmic load_gmic ${HOME}/work/src/gmic-community/include/james_prichard.gmic
load_gmic ${HOME}/work/src/gmic-community/include/jerome_boulanger.gmic load_gmic ${HOME}/work/src/gmic-community/include/jerome_boulanger.gmic
load_gmic ${HOME}/work/src/gmic-community/include/jerome_ferrari.gmic load_gmic ${HOME}/work/src/gmic-community/include/jerome_ferrari.gmic
load_gmic ${HOME}/work/src/gmic-community/include/joan_rake.gmic load_gmic ${HOME}/work/src/gmic-community/include/joan_rake.gmic
load_gmic ${HOME}/work/src/gmic-community/include/karsten_rodenacker.gmic load_gmic ${HOME}/work/src/gmic-community/include/karsten_rodenacker.gmic
load_gmic ${HOME}/work/src/gmic-community/include/mccap.gmic load_gmic ${HOME}/work/src/gmic-community/include/mccap.gmic
load_gmic ${HOME}/work/src/gmic-community/include/martin_souphead.gmic load_gmic ${HOME}/work/src/gmic-community/include/martin_souphead.gmic
load_gmic ${HOME}/work/src/gmic-community/include/mathew_callaghan.gmic load_gmic ${HOME}/work/src/gmic-community/include/mathew_callaghan.gmic
load_gmic ${HOME}/work/src/gmic-community/include/photocomix.gmic load_gmic ${HOME}/work/src/gmic-community/include/photocomix.gmic
load_gmic ${HOME}/work/src/gmic-community/include/stanislav_paskalev.gmic
l[] l[]
load_gmic ${HOME}/work/src/gmic-community/include/sylvie_alexandre.gmic load_gmic ${HOME}/work/src/gmic-community/include/sylvie_alexandre.gmic
s +,{'"#@gui <b>"'} i[1--2:2] ({'"#@gui ________<b>Testing<b>\n#@gui <i>Samj </i>\n"'}) y a y s +,{'"#@gui <b>"'} i[1--2:2] ({'"#@gui ________<b>Testing<b>\n#@gui <i>Samj </i>\n"'}) y a y
endl endl
load_gmic ${HOME}/work/src/gmic-community/include/tom_keil.gmic load_gmic ${HOME}/work/src/gmic-community/include/tom_keil.gmic
load_gmic ${HOME}/work/src/gmic-community/include/reptorian.gmic load_gmic ${HOME}/work/src/gmic-community/include/reptorian.gmic
load_gmic ${HOME}/work/src/gmic-community/include/translation_ca.gmic load_gmic ${HOME}/work/src/gmic-community/include/translation_ca.gmic
load_gmic ${HOME}/work/src/gmic-community/include/translation_fr.gmic load_gmic ${HOME}/work/src/gmic-community/include/translation_fr.gmic
load_gmic ${HOME}/work/src/gmic-community/include/translation_ja.gmic load_gmic ${HOME}/work/src/gmic-community/include/translation_ja.gmic
skipping to change at line 5702 skipping to change at line 5724
y a y y a y
# Upload filter files on G'MIC server. # Upload filter files on G'MIC server.
o raw:${_path_rc}update$_version.gmic,uchar o raw:${_path_rc}update$_version.gmic,uchar
if "d = date(3); h = date(4); h>=7 && d>=1 && d<=5" url=http://bit.ly/2CmhX6 5 # url=http://bit.ly/2uaBRMB if "d = date(3); h = date(4); h>=7 && d>=1 && d<=5" url=http://bit.ly/2CmhX6 5 # url=http://bit.ly/2uaBRMB
else url=http://bit.ly/2CmhX65 # url=http://bit.ly/2uaBRMB # else url=http://bit.ly/2CmhX65 # url=http://bit.ly/2uaBRMB #
fi fi
replace_str "<i>David Tschumperl&#233;</i>","<i><a href=\""$url"\">David Tsc humperl&#233;</a></i>" replace_str "<i>David Tschumperl&#233;</i>","<i><a href=\""$url"\">David Tsc humperl&#233;</a></i>"
o cimgz:/tmp/update$_version.gmic,uchar o cimgz:/tmp/update$_version.gmic,uchar
(280,281) (280,281,282)
repeat w repeat w
v={i[$>]} v={i[$>]}
_update_server_upload[] ${_path_rc}update$_version.gmic,plain_update$v.gmi c _update_server_upload[] ${_path_rc}update$_version.gmic,plain_update$v.gmi c
_update_server_upload[] /tmp/update$_version.gmic,update$v.gmic _update_server_upload[] /tmp/update$_version.gmic,update$v.gmic
done rm. done rm.
rm endl rm endl
fi fi
# Display list of filters (sorted alphabetically) on stdout. # Display list of filters (sorted alphabetically) on stdout.
skipping to change at line 5811 skipping to change at line 5833
if ['{t}']=='Url' replace_str "Url","url" fi if ['{t}']=='Url' replace_str "Url","url" fi
out={t} out={t}
if ['$in']!=['$out'] e[] $_gmic_g" Warning: String '"$in"' substituted b y '"$out"'"$_gmic_n fi if ['$in']!=['$out'] e[] $_gmic_g" Warning: String '"$in"' substituted b y '"$out"'"$_gmic_n fi
_update_server_move : _update_server_move :
if !narg($_nbm) _nbm=0 fi if !narg($_nbm) _nbm=0 fi
_to_move$_nbm="$1" _move_to$_nbm="$2" _nbm+=1 _to_move$_nbm="$1" _move_to$_nbm="$2" _nbm+=1
_update_server_upload : skip "${2=""}" _update_server_upload : skip "${2=""}"
if narg("$2") out="$2" else basename "$1" out=${} fi if narg("$2") out="$2" else basename "$1" out=${} fi
l[] GMIC_LOGIN=${gmic_ftp\ 0} onfail GMIC_LOGIN="" endl if !narg($GMIC_LOGIN)
l[] GMIC_PASSWD=${gmic_ftp\ 1} onfail GMIC_PASSWD="" endl GMIC_LOGIN=${"gmic_ftp 0"}
GMIC_PASSWD=${"gmic_ftp 1"}
fi
if narg($GMIC_LOGIN) if narg($GMIC_LOGIN)
x 0,"lftp ftp://"$GMIC_LOGIN":"$GMIC_PASSWD"@"$GMIC_FTP" -e \"put -O /www/gm ic/ \\\"$1\\\" -o \\\""$out"\\\"; x 0,"lftp ftp://"$GMIC_LOGIN":"$GMIC_PASSWD"@"$GMIC_FTP" -e \"put -O /www/gm ic/ \\\"$1\\\" -o \\\""$out"\\\";
quit\" >/dev/null" quit\" >/dev/null"
fi fi
# Upload or list released binaries on the G'MIC web server. # Upload or list released binaries on the G'MIC web server.
# $1=version number (e.g "1.6.7_pre") # $1=version number (e.g "1.6.7_pre")
# $2={ 0=print list of URLs | 1=upload files } # $2={ 0=print list of URLs | 1=upload files }
_update_server_binaries : check "isbool(${2=1})" _update_server_binaries : check "isbool(${2=1})"
is_pre=${"strcontains $1,_pre"} is_pre=${"strcontains $1,_pre"}
skipping to change at line 6953 skipping to change at line 6977
# _error_metric={ 0=L2-norm | 1=deltaE_1976 | 2=deltaE_2000 },_reconstruction_co lorspace={ 0=srgb | 1=rgb | 2=lab },\ # _error_metric={ 0=L2-norm | 1=deltaE_1976 | 2=deltaE_2000 },_reconstruction_co lorspace={ 0=srgb | 1=rgb | 2=lab },\
# _try_rbf_first={ 0 | 1 } # _try_rbf_first={ 0 | 1 }
#@cli : Compress selected color LUTs as sequences of colored keypoints. #@cli : Compress selected color LUTs as sequences of colored keypoints.
#@cli : Default values: 'max_error=1.25', 'avg_error=0.75', 'max_nb_points=2048' , 'error_metric=2', \ #@cli : Default values: 'max_error=1.25', 'avg_error=0.75', 'max_nb_points=2048' , 'error_metric=2', \
# 'reconstruction_colorspace=0' and 'try_rbf_first=1'. # 'reconstruction_colorspace=0' and 'try_rbf_first=1'.
compress_clut : check "${1=1.25}>0 && ${2=0.75}>0 && isint(${3=2048}) && $3>8 && isin(${4=2},0,1,2) && "\ compress_clut : check "${1=1.25}>0 && ${2=0.75}>0 && isint(${3=2048}) && $3>8 && isin(${4=2},0,1,2) && "\
"isin(${5=0},0,1,2) && isbool(${6=1})" "isin(${5=0},0,1,2) && isbool(${6=1})"
e[^-1] "Compress color LUT$? as a set of colored keypoints, with maximum error $1, average error $2, "\ e[^-1] "Compress color LUT$? as a set of colored keypoints, with maximum error $1, average error $2, "\
"$3 maximum keypoints, "${"s0,s1,s2=L2-RGB,DeltaE_1976,DeltaE_2000 u $s $4"}" metric and "\ "$3 maximum keypoints, "${"s0,s1,s2=L2-RGB,DeltaE_1976,DeltaE_2000 u $s $4"}" metric and "\
${"s0,s1,s2=srgb,rgb,lab u $s$5"}" colorspace for reconstruction." ${"s0,s1,s2=srgb,rgb,lab u $s$5"}" colorspace for reconstruction."
v 0
max_error,avg_error,max_keypoints,metric,colorspace,try_rbf=${1-6} max_error,avg_error,max_keypoints,metric,colorspace,try_rbf=${1-6}
if $try_rbf method=rbf else method=pde fi if $try_rbf method=rbf else method=pde fi
repeat $! l[$>] nm={b} repeat $! l[$>] nm={b}
if iM>255 / 257 fi # When input is 16bits if iM>1024 / 257 fi # When input is 16bits
if d==1 S={round(cbrt(wh))} r $S,$S,$S,100%,-1 fi # When input is a 2D haldc lut image if d==1 S={round(cbrt(wh))} r $S,$S,$S,100%,-1 fi # When input is a 2D haldc lut image
e[] "\n* Process CLUT '"$nm"' ("{w}"x"{h}"x"{d}")." e[] "\n* Process CLUT '"$nm"' ("{w}"x"{h}"x"{d}")."
# Detect B&W cluts. # Detect B&W cluts.
if "s==3 && if "s==3 &&
crop(0,0,0,0,w,h,d,1)==crop(0,0,0,1,w,h,d,1) && crop(0,0,0,0,w,h,d,1)==crop(0,0,0,1,w,h,d,1) &&
crop(0,0,0,0,w,h,d,1)==crop(0,0,0,2,w,h,d,1)" crop(0,0,0,0,w,h,d,1)==crop(0,0,0,2,w,h,d,1)"
channels 0 channels 0
fi fi
skipping to change at line 6994 skipping to change at line 7019
emax,eavg={[iM,ia]} emax,eavg={[iM,ia]}
e[] "\r"$sep" > Add [#"{-2,h}"] Max_Err = "{_$emax}", Avg_Err = "{_$eavg} " " sep="" e[] "\r"$sep" > Add [#"{-2,h}"] Max_Err = "{_$emax}", Avg_Err = "{_$eavg} " " sep=""
if $emax<=$max_error" && "$eavg<=$avg_error rm. break fi if $emax<=$max_error" && "$eavg<=$avg_error rm. break fi
1,1,1,{0,s+3},{"P = [ xM,yM,zM ]; [ P*255/[max(1,w#0-1),max(1,h#0-1),max(1 ,d#0-1)], I(#0,P) ]"} rm.. 1,1,1,{0,s+3},{"P = [ xM,yM,zM ]; [ P*255/[max(1,w#0-1),max(1,h#0-1),max(1 ,d#0-1)], I(#0,P) ]"} rm..
a[-2,-1] y a[-2,-1] y
if h>=320" && "'$method'=='rbf' method=pde rows. 0,7 fi # RBF failed, swit ch back to PDE method. if h>=320" && "'$method'=='rbf' method=pde rows. 0,7 fi # RBF failed, swit ch back to PDE method.
while h<$max_keypoints while h<$max_keypoints
# Iteratively remove keypoints. # Iteratively remove keypoints.
if $_metric max_rounding,avg_rounding=0.1,0.025 if {h>8}
else max_rounding,avg_rounding=1,0.25 if $_metric max_rounding,avg_rounding=0.1,0.025
fi else max_rounding,avg_rounding=1,0.25
if $emax>$max_error" || "$eavg>$avg_error fi
max_error=round($max_error,$max_rounding,1) if $emax>$max_error" || "$eavg>$avg_error
avg_error=round($avg_error,$avg_rounding,1) max_error=round($max_error,$max_rounding,1)
avg_error=round($avg_error,$avg_rounding,1)
fi
index=8 sep="\n"
do
+l. s y rm[$index] a y endl # Remove kth keypoint
+decompress_clut_$method. {0,[w,h,d]},$colorspace
if $_metric==0 -. [0] norm. else srgb2lab. deltaE. [1],{$_metric-1}," "
fi
emax,eavg={[iM,ia]} rm.
if $emax<=$max_error" && "$eavg<=$avg_error rv[-2,-1] else index+=1 fi
e[] "\r"$sep" > Rem [#"{min($index,h-1)}"/"{h}"] Max_Err = "{_$emax}",
Avg_Err = "{_$eavg}" "
sep=""
rm.
while $index<h
fi fi
index=8 sep="\n"
do
+l. s y rm[$index] a y endl # Remove kth keypoint
+decompress_clut_$method. {0,[w,h,d]},$colorspace
if $_metric==0 -. [0] norm. else srgb2lab. deltaE. [1],{$_metric-1}," " fi
emax,eavg={[iM,ia]} rm.
if $emax<=$max_error" && "$eavg<=$avg_error rv[-2,-1] else index+=1 fi
e[] "\r"$sep" > Rem [#"{min($index,h-1)}"/"{h}"] Max_Err = "{_$emax}", Av
g_Err = "{_$eavg}" "
sep=""
rm.
while $index<h
k. k.
# Sort keypoints in lexicographic order (increasing order for RBF, decreasin g for PDE). # Sort keypoints in lexicographic order (increasing order for RBF, decreasin g for PDE).
1,100%,1,1,"P = I(#0); P[0]*65536 + P[1]*256 + P[2]" rv a x sort {`'$method' =='rbf'?_'+':_'-'`},y z. 1,100% 1,100%,1,1,"P = I(#0); P[0]*65536 + P[1]*256 + P[2]" rv a x sort {`'$method' =='rbf'?_'+':_'-'`},y z. 1,100%
to_clutname $nm nm ${} to_clutname $nm nm ${}
endl done endl done
# compress_cluts : "file_pattern",_max_error>0,_avg_error>0,_max_nb_points>=8 : "file_list.txt" # compress_cluts : "file_pattern",_max_error>0,_avg_error>0,_max_nb_points>=8 : "file_list.txt"
# Batch compress CLUT files. # Batch compress CLUT files.
compress_cluts : check "${2=8}>0 && ${3=2}>0 && isint(${4=2047}) && $4>8" compress_cluts : check "${2=1.25}>0 && ${3=0.75}>0 && isint(${4=2047}) && $4>8"
rm rm
if isfile(['{/"$1"}']) i raw:"$1",uchar s -,{'\n'} if isfile(['{/"$1"}']) i raw:"$1",uchar s -,{'\n'}
else files "$1" ({'${}'}) s -,{','} else files "$1" ({'${}'}) s -,{','}
fi fi
rv rv
repeat $! l[$<] repeat $! l[$<]
filename={t} 0 nm. $filename ext={x} rm filename={t} 0 nm. $filename ext={x} rm
basename $filename basename $filename
l[] ({'${}'}) replace_str .$ext,"" basename={t} rm endl l[] ({'${}'}) replace_str .$ext,"" basename={t} rm endl
need_compression=1 need_compression=1
skipping to change at line 7301 skipping to change at line 7327
#@cli fill : value1,_value2,... : [image] : 'formula' : (+) #@cli fill : value1,_value2,... : [image] : 'formula' : (+)
#@cli : Fill selected images with values read from the specified value list, exi sting image #@cli : Fill selected images with values read from the specified value list, exi sting image
#@cli : or mathematical expression. Single quotes may be omitted in 'formula'. #@cli : or mathematical expression. Single quotes may be omitted in 'formula'.
#@cli : (eq. to 'f'). #@cli : (eq. to 'f').
#@cli : $ 4,4 fill 1,2,3,4,5,6,7 #@cli : $ 4,4 fill 1,2,3,4,5,6,7
#@cli : $ 4,4 (1,2,3,4,5,6,7) fill[-2] [-1] #@cli : $ 4,4 (1,2,3,4,5,6,7) fill[-2] [-1]
#@cli : $ 400,400,1,3 fill "X=x-w/2; Y=y-h/2; R=sqrt(X^2+Y^2); a=atan2(Y,X); \ #@cli : $ 400,400,1,3 fill "X=x-w/2; Y=y-h/2; R=sqrt(X^2+Y^2); a=atan2(Y,X); \
# if(R<=180,255*abs(cos(c+200*(x/w-0.5)*(y/h-0.5))),850*(a%(0.1*(c+1))))" # if(R<=180,255*abs(cos(c+200*(x/w-0.5)*(y/h-0.5))),850*(a%(0.1*(c+1))))"
#@cli : $$ #@cli : $$
#@cli index : { [palette] | predefined_palette },0<=_dithering<=1,_map_palette={ 0 | 1 } : (+) #@cli index : { [palette] | palette_name },0<=_dithering<=1,_map_palette={ 0 | 1 } : (+)
#@cli : Index selected vector-valued images by specified vector-valued palette. #@cli : Index selected vector-valued images by specified vector-valued palette.
#@cli : 'predefined_palette' can be { 0=default | 1=HSV | 2=lines | 3=hot | 4=co #@cli : 'palette_name' can be { default | hsv | lines | hot | cool | jet | flag
ol | 5=jet | 6=flag | 7=cube }. | cube | rainbow | algae | amp |\
# balance | curl | deep | delta | dense | diff | haline | ice | matter | oxy | p
hase | rain | solar | speed | tarn |\
# tempo | thermal | topo | turbid | aurora | hocuspocus | srb2 | uzebox }
#@cli : Default values: 'dithering=0' and 'map_palette=0'. #@cli : Default values: 'dithering=0' and 'map_palette=0'.
#@cli : $ image.jpg +index 1,1,1 #@cli : $ image.jpg +index 1,1,1
#@cli : $ image.jpg (0;255;255^0;128;255^0;0;255) +index[-2] [-1],1,1 #@cli : $ image.jpg (0;255;255^0;128;255^0;0;255) +index[-2] [-1],1,1
#@cli : $$ #@cli : $$
index : check "${2=0}>=0 && $2<=1 && isbool(${3=0})"
names=${-_palette_names} N={narg($names)}
l[] if isint("$1") name=${"arg 1+($1%"$N"),"$names} else name="$1" fi onfail n
ame="$1" endl
e[^-1] "Index values in image$? by color LUT '"$name"', with dithering level $
2."
palette $1 index[^-1] .,$2,$3 rm.
#@cli ir : eq. to 'inrange'. #@cli ir : eq. to 'inrange'.
ir : ir :
_gmic_s="$?" v + _inrange $* _gmic_s="$?" v + _inrange $*
#@cli inrange : min[%],max[%] #@cli inrange : min[%],max[%]
#@cli : Detect pixels whose values are in specified range [min,max], in selected images. #@cli : Detect pixels whose values are in specified range [min,max], in selected images.
#@cli : (eq. to 'ir'). #@cli : (eq. to 'ir').
#@cli : $ image.jpg +inrange 25%,75% #@cli : $ image.jpg +inrange 25%,75%
inrange : inrange :
skipping to change at line 7329 skipping to change at line 7362
_inrange : _inrange :
e[0--3] "Detect pixel values in range [$1,$2] in image"$_gmic_s"." e[0--3] "Detect pixel values in range [$1,$2] in image"$_gmic_s"."
repeat $! l[$>] repeat $! l[$>]
m=$1 M=$2 m=$1 M=$2
if ${is_percent\ $1} m={im+(iM-im)*$1} fi if ${is_percent\ $1} m={im+(iM-im)*$1} fi
if ${is_percent\ $2} M={im+(iM-im)*$2} fi if ${is_percent\ $2} M={im+(iM-im)*$2} fi
- {0.5*($m+$M)} abs <= {0.5*abs($M-$m)} - {0.5*($m+$M)} abs <= {0.5*abs($M-$m)}
endl done endl done
#@cli map : [palette],_boundary_conditions : predefined_palette,_boundary_condit ions : (+) #@cli map : [palette],_boundary_conditions : palette_name,_boundary_conditions : (+)
#@cli : Map specified vector-valued palette to selected indexed scalar images. #@cli : Map specified vector-valued palette to selected indexed scalar images.
#@cli : 'predefined_palette' can be { 0=default | 1=HSV | 2=lines | 3=hot | 4=co #@cli : 'palette_name' can be { default | hsv | lines | hot | cool | jet | flag
ol | 5=jet | 6=flag | 7=cube }. | cube | rainbow | algae | amp | \
# balance | curl | deep | delta | dense | diff | gray | haline | ice | matter |
oxy | phase | rain | solar | speed | \
# tarn | tempo | thermal | topo | turbid | aurora | hocuspocus | srb2 | uzebox }
#@cli : 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3= mirror }. #@cli : 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3= mirror }.
#@cli : Default value: 'boundary_conditions=0'. #@cli : Default value: 'boundary_conditions=0'.
#@cli : $ image.jpg +luminance map[-1] 3 #@cli : $ image.jpg +luminance map[-1] 3
#@cli : $ image.jpg +rgb2ycbcr split[-1] c (0,255,0) resize[-1] 256,1,1,1,3 map[ -4] [-1] remove[-1] append[-3--1] c \ #@cli : $ image.jpg +rgb2ycbcr split[-1] c (0,255,0) resize[-1] 256,1,1,1,3 map[ -4] [-1] remove[-1] append[-3--1] c \
# ycbcr2rgb[-1] # ycbcr2rgb[-1]
#@cli : $$ #@cli : $$
map : check "isint(${2=0}) && $2>=0 && $2<=3"
#@cli map_clut : [clut] | "clut_name" s0,s1,s2,s3=dirichlet,neumann,periodic,mirror boundary=${s$2}
#@cli : Map specified RGB color LUT to selected images. names=${-_palette_names} N={narg($names)}
#@cli : $ image.jpg uniform_distribution {2^6},3 mirror[-1] x +map_clut[0] [1] l[] if isint("$1") name=${"arg 1+($1%"$N"),"$names} else name="$1" fi onfail n
map_clut : ame="$1" endl
e[^-1] "Map color LUT $1 on image$?." e[^-1] "Map color LUT '"$name"' on image$?, with "$boundary" boundary conditio
if !$! return fi ns."
to_color palette $1 map[^-1] .,$2 rm.
if ${"is_image_arg $1"} pass$1 0 to_rgb. else clut "$1" fi
l={round((w*h*d)^(1/3))}
if w*h*d!=$l^3 error "Command '$0': Specified CLUT $1 has invalid dimensions "
({w},{h},{d},{s}). fi
r. $l,$l,$l,3,-1
repeat $!-1 l[$>,-1] nm={0,n} split_opacity[0] /[0] {256/$l}
+warp. [0],0,1,1
rm[0] mv. 0 a[^-1] c nm[0] $nm
endl done rm.
#@cli mix_channels : (a00,...,aMN) : [matrix] #@cli mix_channels : (a00,...,aMN) : [matrix]
#@cli : Apply specified matrix to channels of selected images. #@cli : Apply specified matrix to channels of selected images.
#@cli : $ image.jpg +mix_channels (0,1,0;1,0,0;0,0,1) #@cli : $ image.jpg +mix_channels (0,1,0;1,0,0;0,0,1)
mix_channels : mix_channels :
e[^-1] "Apply matrix $1 to channels of image$?." e[^-1] "Apply matrix $1 to channels of image$?."
if ${"is_image_arg $1"} pass$1 1 else i ${^0} fi if ${"is_image_arg $1"} pass$1 1 else i ${^0} fi
repeat $!-1 l[$>] nm={n} repeat $!-1 l[$>] nm={n}
whd={[w,h,d]} r. {[whd,s]},1,1,-1 whd={[w,h,d]} r. {[whd,s]},1,1,-1
pass. 0 mv. 0 m* r $whd,{h},-1 pass. 0 mv. 0 m* r $whd,{h},-1
skipping to change at line 7560 skipping to change at line 7585
#@cli norm #@cli norm
#@cli : Compute the pointwise euclidean norm of vector-valued pixels in selected images. #@cli : Compute the pointwise euclidean norm of vector-valued pixels in selected images.
#@cli : $ image.jpg +norm #@cli : $ image.jpg +norm
#@cli : $$ #@cli : $$
norm : norm :
e[^-1] "Compute pointwise euclidean norm of vectors, in image$?." e[^-1] "Compute pointwise euclidean norm of vectors, in image$?."
sqr compose_channels + sqrt sqr compose_channels + sqrt
#@cli n : eq. to 'normalize'. : (+) #@cli n : eq. to 'normalize'. : (+)
#@cli normalize : { value0[%] | [image0] },{ value1[%] | [image1] } : [image] : (+) #@cli normalize : { value0[%] | [image0] },{ value1[%] | [image1] },_constant_ca se_ratio : [image] : (+)
#@cli : Linearly normalize values of selected images in specified range. #@cli : Linearly normalize values of selected images in specified range.
#@cli : (eq. to 'n'). #@cli : (eq. to 'n').
#@cli : $ image.jpg split x,2 normalize[-1] 64,196 append x #@cli : $ image.jpg split x,2 normalize[-1] 64,196 append x
#@cli : $$ #@cli : $$
#@cli normalize_sum #@cli normalize_sum
#@cli : Normalize selected images with a unitary sum. #@cli : Normalize selected images with a unitary sum.
#@cli : $ image.jpg +histogram normalize_sum[-1] display_graph[-1] 400,300 #@cli : $ image.jpg +histogram normalize_sum[-1] display_graph[-1] 400,300
normalize_sum : normalize_sum :
e[^-1] "Normalize image$? with a unitary sum." e[^-1] "Normalize image$? with a unitary sum."
skipping to change at line 7903 skipping to change at line 7928
endl done endl done
#@cli ac : eq. to 'apply_channels'. #@cli ac : eq. to 'apply_channels'.
ac : ac :
_gmic_s="$?" v + _apply_channels $"*" _gmic_s="$?" v + _apply_channels $"*"
#@cli apply_channels : "command",color_channels,_value_action={ 0=none | 1=cut | 2=normalize } #@cli apply_channels : "command",color_channels,_value_action={ 0=none | 1=cut | 2=normalize }
#@cli : Apply specified command on the chosen color channel(s) of each selected images. #@cli : Apply specified command on the chosen color channel(s) of each selected images.
#@cli : (eq. to 'ac').\n #@cli : (eq. to 'ac').\n
#@cli : Argument 'color_channels' refers to a colorspace, and can be basically o ne of #@cli : Argument 'color_channels' refers to a colorspace, and can be basically o ne of
#@cli : { all | rgba | rgb | ryb | lrgb | ycbcr | lab | lch | hsv | hsi | hsl | cmy | cmyk | yiq }. #@cli : { all | rgba | [s]rgb | ryb | lrgb | ycbcr | lab | lch | hsv | hsi | hsl | cmy | cmyk | yiq }.
#@cli : You can also make the processing focus on a few particular channels of t his colorspace, #@cli : You can also make the processing focus on a few particular channels of t his colorspace,
#@cli : by setting 'color_channels' as 'colorspace_channel' (e.g. 'hsv_h' for th e hue). #@cli : by setting 'color_channels' as 'colorspace_channel' (e.g. 'hsv_h' for th e hue).
#@cli : All channel values are considered to be provided in the [0,255] range. #@cli : All channel values are considered to be provided in the [0,255] range.
#@cli : Default value: 'value_action=0'. #@cli : Default value: 'value_action=0'.
#@cli : $ image.jpg +apply_channels "equalize blur 2",ycbcr_cbcr #@cli : $ image.jpg +apply_channels "equalize blur 2",ycbcr_cbcr
apply_channels : apply_channels :
_gmic_s="$?" v + _$0 $"*" _gmic_s="$?" v + _$0 $"*"
_apply_channels : check "isint(${3=0}) && $3>=0 && $3<=2" _apply_channels : check "isint(${3=0}) && $3>=0 && $3<=2"
mode="$2" channels=${"_ac_list \"$2\""}
if isnum("$2") if isint("$2") e[^-1] "Apply command '$1' on channels '"$channels"' of image"$_gmic_s"."
mode=${arg\ 1+$2,all,rgba,rgb,rgb_r,rgb_g,rgb_b,rgba_a,\
lrgb,lrgb_r,lrgb_g,lrgb_b,\
ycbcr_y,ycbcr_cbcr,ycbcr_cb,ycbcr_cr,ycbcr_cg,\
lab_l,lab_ab,lab_a,lab_b,\
lch_ch,lch_c,lch_h,\
hsv_h,hsv_s,hsv_v,hsi_i,hsl_l,\
cmyk_c,cmyk_m,cmyk_y,cmyk_k,\
yiq_y,yiq_iq,ryb,ryb_r,ryb_y,ryb_b}
fi fi
e[^-1] "Apply command '$1' on channels '"$mode"' of image"$_gmic_s"."
({'$/'}) id={h=0;for(k=0,k<w,((h*=31)+=i[k++])%=1048576)} rm. ({'$/'}) id={h=0;for(k=0,k<w,((h*=31)+=i[k++])%=1048576)} rm.
_ac_$mode m _ac_precond$id:$_p m _ac_forward$id:$_f m _ac_backward$id:$_b _ac_$channels m _ac_precond$id:$_p m _ac_forward$id:$_f m _ac_backward$id:$_b
repeat $! l[$>] repeat $! l[$>]
_ac_precond$id is_alpha={s==2" || "s==4} _ac_precond$id is_alpha={s==2" || "s==4}
if $is_alpha s c,{1-s} fi if $is_alpha s c,{1-s} fi
_ac_forward$id[0] a c _ac_forward$id[0] a c
sh $_s _ac. "$1" sh $_s _ac. "$1"
if $3==1 c. 0,255 elif $3==2 n. 0,255 fi if $3==1 c. 0,255 elif $3==2 n. 0,255 fi
rm. rm.
if $is_alpha s c,{1-s} fi if $is_alpha s c,{1-s} fi
_ac_backward$id[0] a c _ac_backward$id[0] a c
endl done endl done
uncommand _ac_precond$id,_ac_forward$id,_ac_backward$id uncommand _ac_precond$id,_ac_forward$id,_ac_backward$id
_ac_list :
if isnum("$1")
arg 1+round($1),all,rgba,rgb,rgb_r,rgb_g,rgb_b,rgba_a,\
lrgb,lrgb_r,lrgb_g,lrgb_b,\
ycbcr_y,ycbcr_cbcr,ycbcr_cb,ycbcr_cr,ycbcr_cg,\
lab_l,lab_ab,lab_a,lab_b,\
lch_ch,lch_c,lch_h,\
hsv_h,hsv_s,hsv_v,hsi_i,hsl_l,\
cmyk_c,cmyk_m,cmyk_y,cmyk_k,\
yiq_y,yiq_iq,ryb,ryb_r,ryb_y,ryb_b
else u "$1" fi
_ac : _ac :
whds={w},{h},{d},{s} ${1--1} k[0] r $whds,0 whds={w},{h},{d},{s} ${1--1} k[0] r $whds,0
_ac_all : _p="" _f="" _b="" _s=0,100% _ac_all : _p="" _f="" _b="" _s=0,100%
_ac_rgba : _p="to_rgba" _f="" _b="" _s=0,3 _ac_rgba : _p="to_rgba" _f="" _b="" _s=0,3
_ac_rgba_r : _p="to_color" _f="" _b="" _s=0 _ac_rgba_r : _p="to_color" _f="" _b="" _s=0
_ac_rgba_g : _p="to_color" _f="" _b="" _s=1 _ac_rgba_g : _p="to_color" _f="" _b="" _s=1
_ac_rgba_b : _p="to_color" _f="" _b="" _s=2 _ac_rgba_b : _p="to_color" _f="" _b="" _s=2
_ac_rgba_a : _p="to_rgba" _f="" _b="" _s=3 _ac_rgba_a : _p="to_rgba" _f="" _b="" _s=3
_ac_rgb : _p="to_color" _f="" _b="" _s=0,2 _ac_rgb : _p="to_color" _f="" _b="" _s=0,2
_ac_rgb_r : _ac_rgba_r _ac_rgb_r : _ac_rgba_r
_ac_rgb_g : _ac_rgba_g _ac_rgb_g : _ac_rgba_g
_ac_rgb_b : _ac_rgba_b _ac_rgb_b : _ac_rgba_b
_ac_srgb : _ac_rgb
_ac_srgb_r : _ac_rgb_r
_ac_srgb_g : _ac_rgb_g
_ac_srgb_b : _ac_rgb_b
_ac_lrgb : _p="to_color" _f="srgb2rgb" _b="rgb2srgb" _s=0,2 _ac_lrgb : _p="to_color" _f="srgb2rgb" _b="rgb2srgb" _s=0,2
_ac_lrgb_r : _p="to_color" _f="srgb2rgb" _b="rgb2srgb" _s=0 _ac_lrgb_r : _p="to_color" _f="srgb2rgb" _b="rgb2srgb" _s=0
_ac_lrgb_g : _p="to_color" _f="srgb2rgb" _b="rgb2srgb" _s=1 _ac_lrgb_g : _p="to_color" _f="srgb2rgb" _b="rgb2srgb" _s=1
_ac_lrgb_b : _p="to_color" _f="srgb2rgb" _b="rgb2srgb" _s=2 _ac_lrgb_b : _p="to_color" _f="srgb2rgb" _b="rgb2srgb" _s=2
_ac_ryb : _p="to_color" _f="rgb2ryb" _b="ryb2rgb" _s=0,2 _ac_ryb : _p="to_color" _f="rgb2ryb" _b="ryb2rgb" _s=0,2
_ac_ryb_r : _p="to_color" _f="rgb2ryb" _b="ryb2rgb" _s=0 _ac_ryb_r : _p="to_color" _f="rgb2ryb" _b="ryb2rgb" _s=0
_ac_ryb_y : _p="to_color" _f="rgb2ryb" _b="ryb2rgb" _s=1 _ac_ryb_y : _p="to_color" _f="rgb2ryb" _b="ryb2rgb" _s=1
_ac_ryb_b : _p="to_color" _f="rgb2ryb" _b="ryb2rgb" _s=2 _ac_ryb_b : _p="to_color" _f="rgb2ryb" _b="ryb2rgb" _s=2
skipping to change at line 8481 skipping to change at line 8513
channels 0 rgb2srgb channels 0 rgb2srgb
#@cli lightness #@cli lightness
#@cli : Compute lightness of selected sRGB images. #@cli : Compute lightness of selected sRGB images.
#@cli : $ image.jpg +lightness #@cli : $ image.jpg +lightness
lightness : lightness :
e[^-1] "Compute lightness of image$?." e[^-1] "Compute lightness of image$?."
remove_opacity srgb2rgb remove_opacity srgb2rgb
if s==3 rgb2lab channels 0 * {255/100} elif s!=1 norm n 0,255 rgb2srgb fi if s==3 rgb2lab channels 0 * {255/100} elif s!=1 norm n 0,255 rgb2srgb fi
#@cli lut_rainbow
#@cli : Input a 256-entries RGB colormap of rainbow colors.
#@cli : $ image.jpg lut_rainbow +luminance[-2] map[-1] [-2]
lut_rainbow :
e[^-1] "Input RGB colormap of 256 rainbow colors."
base642img[] \
"MiB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM2MjgKeJxj4uLl5Rfg5xcSl5J
XVFVT19LS0dXR0dXVAdK6hkYmZuYWlhYWlpZ"\
"WllZW1lY21lbWIGBjAyatIcDKysrCwszYQEddUYSVgYERjKAEHKDycABWSSOnwKi03LLGzgkz5q3YtH
3f8fNX7zx+9ubTt1/////9+/fP71+/fv748f"\
"3Ht2/fvn77+vXrNyj4CgJfgBAGvgCZn9+/fvbozo3LZ04e2rdjw+olC2ZM6GqqKspOCPdztTTSU5MXZ
mXm4uMXFBIWEhaXlJNXVlUHetvA0MjYxNTC2"\
"t7JycXV3dPL28fH18/fPyAwMCgoOAQEQkPDgCA8IhxERURGRsXExCUkp2Vk55dW1DV19E2dvXD5mg2b
Nm/eBAQbN27cAATr165dt3bNaqxg7dq16zcA"\
"lW7dtmPXrn0HDh4+duLkmXMXL184d+rooX07t21as3zR3BkTulvqK4tz0pJiwv29XR3srMxNjAz1oUA
PCIARp6WlqamhrqaqoiQvJysnJ6+goKCoqKS"\
"kqKSoIA8UkZIUFxXm5+UVEBISEuTn5eFkYhOWVNA0NHd09w+JSkjLyi+tbGhp6+6fNHXG7Dlz589fsH
DR4iVLli5bvmzpsmXLl69YsWIlEKyCgNUQcv"\
"UakPs3bt6yfefufQePnTx39fbDx4/v37p25viBHZvXrFg0Z/rE7ta6isKspKjQIDQQEgKmgoMDAwMDA
vz8/Hy8PD3dPVxdnB3trK0sjI0MdbU11FSVF"\
"eQhPlFWUQGlUh1dPT19A0MDOACHga6utrYW2P9qaqpArKamrgGCGurqQAFlJQU5GSlxEQE+HgFgAAgK
8PFyMgEAsxoliDEgMTggMSAxICMyNgp4nHP3"\
"jWKILkrMzEvKL1fIKS2JZQAAON0GDg=="
nm. [lut_rainbow]
#@cli lut_contrast : _nb_colors>1,_min_rgb_value #@cli lut_contrast : _nb_colors>1,_min_rgb_value
#@cli : Generate a RGB colormap where consecutive colors have high contrast. #@cli : Generate a RGB colormap where consecutive colors have high contrast.
#@cli : This function performs a specific score maximization to generate the res ult, so #@cli : This function performs a specific score maximization to generate the res ult, so
#@cli : it may take some time when 'nb_colors' is high. #@cli : it may take some time when 'nb_colors' is high.
#@cli : Default values: 'nb_colors=256' and 'min_rgb_value=64'. #@cli : Default values: 'nb_colors=256' and 'min_rgb_value=64'.
lut_contrast : check "isint(${1=256}) && $1>=1 && isnum(${2=48})" lut_contrast : check "isint(${1=256}) && $1>=1 && isnum(${2=48})"
e[^-1] "Generate high-contrast RGB colormap with $1 colors and min RGB value $ 2." e[^-1] "Generate high-contrast RGB colormap with $1 colors and min RGB value $ 2."
l[] l[]
# Initialization by farthest point sampling of the RGB cube. # Initialization by farthest point sampling of the RGB cube.
skipping to change at line 8566 skipping to change at line 8581
kmax = min(x+N,w-1); kmax = min(x+N,w-1);
for (k = kmin, k<=kmax, ++k, for (k = kmin, k<=kmax, ++k,
RGB = (I[#0,k])[3,3]; RGB = (I[#0,k])[3,3];
w = (1 + N - abs(k-x))^1.5; w = (1 + N - abs(k-x))^1.5;
dist+= w*norm(RGB - RGB0); dist+= w*norm(RGB - RGB0);
sumw+=w; sumw+=w;
); );
dist/=sumw" dist/=sumw"
u {is} rm. u {is} rm.
#@cli map_clut : [clut] | "clut_name"
#@cli : Map specified RGB color LUT to selected images.
#@cli : $ image.jpg uniform_distribution {2^6},3 mirror[-1] x +map_clut[0] [1]
map_clut :
e[^-1] "Map color LUT $1 on image$?."
if !$! return fi
to_color
if ${"is_image_arg $1"} pass$1 0 to_rgb. else clut "$1" fi
l={round((w*h*d)^(1/3))}
if w*h*d!=$l^3 error "Command '$0': Specified CLUT $1 has invalid dimensions "
({w},{h},{d},{s}). fi
r. $l,$l,$l,3,-1
repeat $!-1 l[$>,-1] nm={0,n} split_opacity[0] /[0] {256/$l}
+warp. [0],0,1,1
rm[0] mv. 0 a[^-1] c nm[0] $nm
endl done rm.
#@cli mix_rgb : a11,a12,a13,a21,a22,a23,a31,a32,a33 #@cli mix_rgb : a11,a12,a13,a21,a22,a23,a31,a32,a33
#@cli : Apply 3x3 specified matrix to RGB colors of selected images. #@cli : Apply 3x3 specified matrix to RGB colors of selected images.
#@cli : Default values: 'a11=1', 'a12=a13=a21=0', 'a22=1', 'a23=a31=a32=0' and ' a33=1'. #@cli : Default values: 'a11=1', 'a12=a13=a21=0', 'a22=1', 'a23=a31=a32=0' and ' a33=1'.
#@cli : $ image.jpg +mix_rgb 0,1,0,1,0,0,0,0,1 #@cli : $ image.jpg +mix_rgb 0,1,0,1,0,0,0,0,1
#@cli : $$ #@cli : $$
mix_rgb : skip ${1=1},${2=0},${3=0},${4=0},${5=1},${6=0},${7=0},${8=0},${9=1} mix_rgb : skip ${1=1},${2=0},${3=0},${4=0},${5=1},${6=0},${7=0},${8=0},${9=1}
e[^-1] "Apply matrix [ $1 $2 $3 ; $4 $5 $6 ; $7 $8 $9 ] to RGB colors of image $?." e[^-1] "Apply matrix [ $1 $2 $3 ; $4 $5 $6 ; $7 $8 $9 ] to RGB colors of image $?."
to_color repeat $! sh[$>] 0,2 mix_channels. (${1-3};${4-6};${7-9}) rm. done to_color repeat $! sh[$>] 0,2 mix_channels. (${1-3};${4-6};${7-9}) rm. done
#@cli palette : palette_name | palette_number
#@cli : Input specified color palette at the end of the image list.
#@cli : 'palette_name' can be { default | hsv | lines | hot | cool | jet | flag
| cube | rainbow | algae | amp | \
# balance | curl | deep | delta | dense | diff | gray | haline | ice | matter |
oxy | phase | rain | solar | speed | \
# tarn | tempo | thermal | topo | turbid | aurora | hocuspocus | srb2 | uzebox }
#@cli : $ palette hsv
palette :
names=${-_palette_names} N={narg($names)}
l[] if isint("$1") name=${"arg 1+($1%"$N"),"$names} else name="$1" fi onfail n
ame="$1" endl
e[^-1] "Input color palette '"$name"'."
_palette_$name
_palette_names :
u default,hsv,lines,hot,cool,jet,flag,cube,rainbow,algae,amp,balance,curl,deep
,delta,dense,diff,gray,haline,ice,\
matter,oxy,phase,rain,solar,speed,tarn,tempo,thermal,topo,turbid,aurora,hocu
spocus,srb2,uzebox
_palette2code : # Convert a set of input palettes
sort_list +,n
repeat $! l[$>]
r {whd},1,1,100%,-1
img2base64 0,0
e[] "_palette_"{n}" : "
b64=\"${}\"
l[] ({'$b64'}) s x,-119 ({'\\\\\n'}) a[0--3] .,x rm. a x b64={t} rm endl # N
o more than 120 char / lines
e[] " base642img \\\n"$b64"\n"
endl done
# The color palettes below comes from the CImg library 'http://cimg.eu/'.
_palette_default :
256,1,1,3,[16+32*int(x>>5),16+32*int((x>>2)&7),32+64*int(x&3)]
_palette_hsv :
256,1,1,3,[x*359/(w-1),1,1] hsv2rgb. round.
_palette_lines :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM2MTcKeJwNkhGgu1AYxT8YDP4
QDB4Eg+BKEATBYBAEQXDhQhAMHgweBBeuXB\
gMgmAwCIIgCIJBEAQPguBKEASDwWDwYDD4/tGx75zf+Q4gAuhCPFVzM0CgvUXFmr0plIpkB2KwW4bppr
16aMgRzge16wbwTbxW0L6Y0IxsjiFyZyQvAISoD\
PFMYgWlnTUI/M4bsllO+I5M0GuoWm+LP6kImrtktjhu8sxjaJ9V6zwNDy0FijoRcloRzGvghbDTAiO+Z
8/Hv9JoKRbRr79JjwXqpOfBGxRasEejCH2kHyhr\
uCHk2jXJ5xkgGFdjPgp/4IZ4HDTk4LTjXrAED56dzkIskRGG8Gwh9FdqTh8bkMgp0+JG9tb+xXpLf58u
gHG/GoPG6ZmnSGh+Bn1OyCkX23dUAjon753DhyT\
JuhiCaxcy8acf79DuuwbQNo/NItIqXXWF491E8R0ECNOppKlesjlaK8wsIqpKwL3QJwnhCygGtbCWbgb
vJ0W4GFMOSrgnpIQ9rZHDYMyVS261dE1U1B/hkU\
InqiU/44MDQ/m4BMtHV9Wq5bgqjtJ6laFWKUDtOwsRFvaMLvSAZbHj+u9o/u0itAN5xHX85KSu4GblHN
0BJgEHfPGtksZjK4JkzFY1AvkIMTEJBX7tO4HCF\
6Hov85VvUXaEWosOIqirYUDkWW/OH7FGP18B9h0jjs49tyukEYSKYiZTjCmPnkxI7neAWkOOTxrs4A3b
lzFEhvJsgMXqmsicxgRGMFil7o5wS3HuIZmAGcc\
g8wvlM8UfPWXpfJN5JTPj+YlnxB6QD6tvGmdD9oUxoBrWc3mf8h5fjM="
_palette_hot :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICMxMTQKeJxjYGbj5OEXEpWQllN
UUdfSNTA2s7Sxd3L18PYLDAmPik1ITsvMyS\
8qraiua2xp7+qdMHnazDnzFy1dsXrdxi3bd+09cPjYyTPnL129cfvewyfPX7398Pnbzz//hw5goAkYOo
FKG//TBNAkUAEAWH6Q"
_palette_cool :
base642img \
"MSBmbG9hdCBsaXR0bGVfZW5kaWFuCjI1NiAxIDEgMyAjODk1Cnic7dX7a81xHMfxr/udud+Z+9yP+92
OmRmGY4aZmWEYhoOZYViSliRJWtJakpYkSV\
qSlqQlSZKWpCWtJWlJWtLyfOVV/ghbe+yHtZ3zPZ/P+/16BYG+iuP5EeYbxShHFWoRLAqCGMQihDAiyE
YUxSjBJZSiHBW4h0pUoRqvUYNa1KMBjQgSgqA12\
qMzYtAL/TAIsRiJOExACNMxG/MRRiKSkYII0pCOTGQjB7nIQxT5KEQRinEGZ3EOJTiPC7iIS7iMK7iKU
lzDdZShHDdwE7dQgdu4g7u4h/t4gIeoxCM8xhNU\
4Sme4Tmq8QIv8Qqv8QZv8Q41eI8P+IhafMJn1KEeX/AV39CA7/iBn2jEL/xGE4LFQdACLdEKrdEGbdEO
7dEBHdEJndEFXdENMeiOHuiJXuiNPuiLfuiPARi\
IQRiMIRiKWAzDcIzASIzCaIxBHMZiHMZjAiZiEiYjhCmYimmYjhmYiVmYjTmYi3mYjwVYiHiEsQgJWIx
ELEESliIZy7AcK5CClViF1YhgDVKxFmlYh/XYgH\
RsRAY2IRObkYUtyMZWbMN25GAHdmIXcrEbe7AXediH/TiAKA7iEA4jH0dQgKMoxDEcxwkU4SRO4bSd8u
+K/DfH/T+Ffo0Cv2a+3+OQ3zPqZ9jvZ8rzM+7xM\
+f6M+z0Z8rxZ9zmz5ztM8jymWT6jDJ8Zuk+w/U+0zSfcarPPOI7WOU7SfEdLfedJfsOk3ynib7jBN+57
l4zoFnQTGg2NCOaFc2MZkczpFnSTGm2NGOaNc2c\
Zk8zqFnUTGo2NaOaVc2sZlczrFnWTGu2NeOadc28Zl87oF3QTmg3tCPaFe2Mdkc7pF3STmm3tGPaNe2c
dk87qF3UTmo3taPaVe2sdlc7rF3WTmu3tePade2\
8dr/JWfDL2fDTWfHd2fHNWfLF2VLnrPnk7PnoLHrvbHrnrHrj7HrlLHvhbHvurHvq7HviLHzkbHzorLz
v7LzrLL3tbL3lrL3h7C1zFl9zNl91Vl92dl90lp\
93tp9z1p9x9qsD1AXqBHWDOkJdoc5Qd6hD1CXqFHWLOkZdo85R96iD1EXqJHWTOkpdpc5Sd6nD1GXqNH
WbOk5dp85T9zW6C+vdjTXuymp3Z6W7tMLdWuquL\
XH3Rt3FEXdzyF2tzlZ317rLy93t4fDfrqfzY7eM/5cBzZo1+9/8ARSvF3c="
_palette_jet :
base642img \
"MSBmbG9hdCBsaXR0bGVfZW5kaWFuCjI1NiAxIDEgMyAjMzUzCnic7dbBR4MBHMbxNyIiRpQYETGWiBE
Rb40Ro4x4iRGjjHiJEaPLTp3eU6edOu1Ul5\
06vadOO3XaqdNOnd5Tpx36Pjx/QjPN+/Jhhx3m/X0fFgT5M5snDIMgReGEz4iRYIAUY2RYPuU7KKKECk
LUEaGFGF308IQEz+jjBQO8Yoh3pPjACJ8Y4wsTf\
CPDD6ZYqvIbsIJVrKGAdWxgC0VsYwe7KKGMfRyggkMc4RghqqjhDHWco4FLRLhCE9do4QZt3CHGPTp4Q
BePuZnIW81b/S+6fscdv/PYN2j7Ji3fqOmbRb5h\
wzet+8Y131y3VwNqQU2oDTWiVtSM2lFDaklNqS01ptbUnNpTg2pRTapNNTp1s5kbnrjpsRsfufnUGxh6
EwNvpO/NJN5Qz5uKvbHImwu9wZI3qW1qo5k3m3r\
DiTetbWvj2jqbv93cm/9NF1Xe6p+2evFWntc/uUV+fgEA+6WF"
_palette_flag :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICMyNAp4nPv/n4Hh/wjGDCMeD4J
IGEAMAH3RPtA="
_palette_cube :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICMzNzAKeJxjYOcTlVHWMrSwd/M
NiU7KLCiva+2ZPGvhivXb9h45fenmg+fvvv\
75/eXts/s3Lp46vGfruuULZk7qbqkty89IjAr2cbUzN9BUkhbhZWPk4BeTVdE2snRw9wuNSc4qrKhv65
0ye9HKDdv3HT1z+dbDF++//f31+c3Te9cvnDy0e\
8vaZfNnTOxqrinNS0+IDPJ2sTXT11CUEuZhZeIUEJdT1TG2cvTwD4tNyS6qbGjvmzpn8aqNO/YfO3vl9
qOXH77/+/np9ZO7186fOLhr85ql86ZP6GyqLslN\
i48I9HK2MdVTV5AU4mZh5hKUkFfTNbF28gwIj0vNKa5q7OifNnfJ6k07Dxw/d/XO41cff/xnIAawcAtJ
Kqjrmdo4ewVGxKflllQ3dU6YPm/pms27Dp44f+3\
uk9effv6nKyDG/0R5jb6AlUdYSlFD38zWxTsoMiE9r7SmuWvijPnL1m7Zfejkhev3nr75/Iu+AQkAzZ6
QNg=="
_palette_rainbow :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM2MjgKeJxj4uLl5Rfg5xcSl5J
XVFVT19LS0dXR0dXVAdK6hkYmZuYWlhYWlp\
ZWllZW1lY21lbWIGBjAyatIcDKysrCwszYQEddUYSVgYERjKAEHKDycABWSSOnwKi03LLGzgkz5q3YtH
3f8fNX7zx+9ubTt1/////9+/fP71+/fv748f3Ht\
2/fvn77+vXrNyj4CgJfgBAGvgCZn9+/fvbozo3LZ04e2rdjw+olC2ZM6GqqKspOCPdztTTSU5MXZmXm4
uMXFBIWEhaXlJNXVlUHetvA0MjYxNTC2t7JycXV\
3dPL28fH18/fPyAwMCgoOAQEQkPDgCA8IhxERURGRsXExCUkp2Vk55dW1DV19E2dvXD5mg2bNm/eBAQb
N27cAATr165dt3bNaqxg7dq16zcAlW7dtmPXrn0\
HDh4+duLkmXMXL184d+rooX07t21as3zR3BkTulvqK4tz0pJiwv29XR3srMxNjAz1oUAPCIARp6Wlqam
hrqaqoiQvJysnJ6+goKCoqKSkqKSoIA8UkZIUFx\
Xm5+UVEBISEuTn5eFkYhOWVNA0NHd09w+JSkjLyi+tbGhp6+6fNHXG7Dlz589fsHDR4iVLli5bvmzpsm
XLl69YsWIlEKyCgNUQcvUakPs3bt6yfefufQePn\
Tx39fbDx4/v37p25viBHZvXrFg0Z/rE7ta6isKspKjQIDQQEgKmgoMDAwMDAvz8/Hy8PD3dPVxdnB3tr
K0sjI0MdbU11FSVFeQhPlFWUQGlUh1dPT19A0MD\
OACHga6utrYW2P9qaqpArKamrgGCGurqQAFlJQU5GSlxEQE+HgFgAAgK8PFyMgEAsxoliA=="
# The color palettes below have been converted from 'https://matplotlib.org/cmoc
ean/'.
_palette_algae :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM2NjQKeJy7dvXK5YsXzp87c/r
UyePHjh45dPDA/r17du/asX3b1s2bNq5ft3\
bNqpUrli1dsnjhgvlz58yeOWP61CmTJ07o7+3p7uxoa21paqyvq6murCgrLS4qyM/NycpIT01JSoiLjY
4MDw0OCvDz8XJ3dXa0t7WyMDMx0tfV1lRXVVaUl\
5ORkhQXFREWFODn5eHm4uLk4GBnZ2cDASDNzsHBycnFxc3Nw8PLy8fHzy8gICgoJCQkLCwiIiIKBGJiY
uIgIAECkvgAWIUEWLEYCIB0Aw0RFhYGmico+PPH\
929fv3z+9PHD+/fv3r55/erli+fPnz198vjRw4cP7t+7e+f27Vs3b1y/fg0YTpcvAUPq/LmzZ04DA+vE
CWBwHT1y+BAoxPbv27sHGGg7d+7YDgy3rVs2b9q\
0ccOG9euAobd69aqVK1csXw4MwiWLFy0EhuK8ucBwnDVzxozp04BBOWkSMDD7gKHZ1dXZ0Q4M0Oamxsa
G+rramuqqyory8rLSkuKiwoL8vLzcnOyszIz0tL\
TUlOSkxIT4uLjYmOioyIjwsLDQkOCgwIAAfz9fH28vT08PdzdXF2dnJ0cHeztbWxtrK0sLc3MzUxNjI0
NDA309XR1tbS1NDXU1VVUVUMyfPHHs6OFDB/fv2\
7Mb6IGtW4BuX7cW6GygmxcvAroX6FqQWydPmghyKMiZIFeC3QhyIijmQQ4Eug/kPIjrgM4DuQ7kPLD7Q
kKCg4OAIBACAmDAHwL8QMAXBHyAwNvb2wsIPIE+\
8fBwd3dzc3N1dXUB+sjZycnR0cHB3t7eDuQxG2trKytLSwuQ74DeMzE2NgL7UF8P6EewJzU1gN5UU1VR
UVZWUlRUkJeXk5WVkZaWAqYLYHIAJgQAOco0Ig=\
="
_palette_amp :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM2NDkKeJz7+OHD+3fv3r598+b
161evXr58+eLF8+fPnj17+vTJkyePHz969O\
jhwwcPHty/f//evXt37965c+f27du3bt26efPmjRs3rl+/fu3atatXr165cuXy5cuXLl28ePHChQvnz5
8/d+7c2bNnz5w5c/r0qVOnTp48eeLEiePHjx07d\
vTokSNHDh8+dOjQwYMHDhzYv3/fvr179+zZs3v3rl07d+7YsX37tq1bt2zZvHnTxo0b1q9ft3bNmtWrV
q5YvnzZ0iWLFy1cMH/e3DmzZ82YPm3qlMkTJ/T3\
9XZ3dba3tbY0NTbU1dZUVVaUlZYUFRbk5eZkZWakpaYkJSbExcZERUaEhYYEBwb4+/p4e3m4u7k6Ozna
29navHn96uWL50+fPH708P69u3du37xx/drVK5c\
uXjh/7uzpUydPHD925PChgwf2792ze9fOHdu2bgG6awPQUSA3QV0EdtDMGdOBDpoEdFFvD9BFHe2tLc1
AJ9XX1lQD3VReWlIMcVR2VmY60FXJiQnxcbHRCG\
f5AZ3lCXeWtZWluZmpsZGhvp6ujpamhrqqirKSooK8nIy0lKSEhLiYqIiwsJCgoICAAD8/HxTw8vLy4Q
S8EMADAtxAwAUEnEDwBuj9Z0/Bvr9z+9aN61evX\
L54AeR1sM8PHti3d8+undu3bdkM9vWqlcuXLVkMjIS5c2bNnD4N6GGQf4HebWttbmqor6upBvsV7FWwT
1OSk4AejYmOiggPCwkOAvrTF+JPF2dHB4hHLYA+\
NQF61QDkVx1tLU1NDQ11NTU1VVVVFTSgCgJqIKAOBBoQoIkEwAIgOZh+ZWUlJUVFRQVg0MnJysrISAPD
DxyAwBAEByEANjxrrg=="
_palette_balance :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM3MzgKeJwTl5CUkpaRlZNXUFR
SVlZRVVNTV9fQ0NAEAg0NdXU1FWVFORkJUS\
F+Xm4uTi5uHj4BYVEJaVkFZVUNbV0DY1MLa1sHJ1cPb9+A4LDI6LjElIzsvMKS8uq6xpb27r6JU6bPmr
tg8bKVa9Zv2rpj976DR46fOnP+0tUbt+8+ePzsx\
et3Hz68f/f2zetXL188f/7s6ZPHjx89fHD//r27d+/cvnXr5o0b169du3rlyuVLly5euHD+3NmzZ06fP
nXyxInjx44ePXL40MEDB/bv27tn966dO7Zv27pl\
88YN69euWbVi+dLFC+fPnT1z2pRJ/b1dHa1NDbVVFaVFBblZGalJCbFREaHBAb7eHm7OjnY2MrJAnyur
qKlraGrr6OobGBqbmJpbWFrZ2No7ODq7uHl4Ab0\
WFAL0W2x8UkpaRlZOXkFRSWl5ZXVtfUNTS1t7Z3dP34SJk6dOmzFr9tx5CxYtXrpsxcrVa9au37Bp89Z
tO3bu2rN3/4FDh48eO3Hq9NlzFy5dvnrtxq07d+\
8/fPzk2YtXb968fP700YN7t29eu3Lp/NnTJ44dObh/764d2zZvXL921YplII/MmjFtykSQR9paGuuBPi
krLszPAXolOSEuJjI8JMjf18vD1cnB1srC1MhAV\
1tDTVlRXlZaUlxUREhQgJ+fj4+Pl5cPGfDy8vLw8HBzc3FxcoLizi8wNAIYdakZ2flFZZW1DS0d3f2Tp
s2at3DpCnC87dq9Z+/effv2AsGePXt2A8EuMNiJ\
ABCBXUApoAqQ4v37Dxw8eOjwkaNHjx0/cRLk9fMXLl66cvXa9Zu3bt+9d//hoydPn7949fr1i2ePH9y9
df3qpfNnTh47fGDf7h1bN61fsxLo83mzZ0yd1N/\
T2d7SWFcN9DUk/uJjo8JDIX52drCzsTI3NTbU19XR0tRQV1NVgQJVVXBChqVkaFoGyisrKSoqyMnKSEt
JSoiJiggLAgD3W3vg"
_palette_curl :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM3NTUKeJwTERUVExMXl5CQkJS
UlJKSkgYDGRAAs4BCkpIS4uJioqIiwkJCgo\
ICAgKCgkIiouJSMvJKqpo6BiYWNvYuHj4BIREx8cnp2fnFZVV1ja0dPf2Tps2cs2DxspVrN2zetnPP/k
NHT5w+d/HKtZt37j96+vzV2w+fv/74/ffv718/f\
3z/9vXL508fP7x/9/bNm9evXr588fz5s6dPnzx+/Ojhwwf379+7e/fO7du3bt64fv3a1SuXL128cO7sm
dMnTxw/euTQwf179+zasX3r5o0b1q1ZtWLZkkUL\
5s2ZNX3q5In9PV0drc2NdTWV5SVF+blZ6alJ8bFR4aFB/r5eHq5ODrbWFmbGsvKKyqrqmtq6+gZGJmYW
Vja29o7Oru4eXj5+AUHBoeGR0bHxCUkpaRlZOXk\
FhcWl5ZXVtfUNTS1tHV3dvf0TJ02ZNn3mrDlz5y9YtHjpshUrV61Zu27Dxk1btm7fsXP3nr37Dxw6fOT
Y8ZOnzpw9f+HSlavXb9y6c/f+w0dPnr14+frt+4\
+fv3799OHt65fPnjy8f+fW9auXLpw9feLY4YP79+zavnXThrWrVyxbvGDe7JnTpoB8097a1FBbXVFWXJ
ifk5WRmpwYFxMVERYc6O/r7enu6uxob2tjZWFmY\
myor6ujpamupqKsqCAvJyMNjkExUAyKiAgLA2MREo38fHy8vM4urm5A33r7+Pr5Az0cEhoWHhkVHRMbl
5CYlJySmpaemZWdk5uXX1BYVFxcUlpWXl5RWVVV\
XV1TU1tbV1dXX1/f0NDY2NTU3NzS2trW3tHZ1dPbBw2X2XPmLVi0ZNnK1WvXb9yybefufQcOA9PA2QuX
r924fe/hE3Aa+Pzh7ctnj+/fuXH10rnTJ44c3Ld\
7+5aN61avWLpo/pyZ0yZP7OvubGtpqq+triwvLS4syMvNzsrMSE9LTUlJTkpKTExMgIB4MEjAACDRuLj
Y2JjoqMiI8LDQ4KAAYGh5ebi5gOLf0twUAHcuf4\
k="
_palette_deep :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM2MTcKeJz7+/vn96+fP75/+/r
FsyePHty7c+vGtSuXLpw7c/L40cMH9+/dvW\
Pblk0b1q1euXzp4gXz5syaMXXyxP7e7s721ubG+trqyvKykqLC/Lyc7MyM9LSU5KTEhPi42JiY6KjIiI
jwsLDQ0JDg4KCgwMDAgAB/fz8/P19fHx8fb29vL\
y8vT09PDw8Pd3d3Nzc3V1dXFxcXZ2dnJyBwdHR0AAJ7ELCDAFsUABEDSYPUOTgiAFQfRIeNjbW1lZWlp
YWFuZmZqamJibGRkaGhgb6+nq6ujra2lqamhvrf\
P39+//r548f3b1+/fvn86dPHDx/ev3v79s3r169evnjx/Nmzp08eP3708OGD+/fu3b1z+/atmzduXL92
9eqVy5cuXrxw/tzZM6dPnTp54vixo0cOHzp4YP+\
+vXt279q5Y/u2rVs2b9q4Yf26tWtWr1q5YvmypUsWL1q4YP68ObNnzZwxfdrUKZMnTZzQ39fb093V2dH
e1trS3NTY2FBfV1tTXVVZUV5WWlJcVFiQn5ebk5\
2VmZ6WCg9bUNCGA4M1KDDA38/Xx9vLwx0YfC7OTo4O9kBf21iDfAzysImxsZGhgYG+nh7ct2pqqirKyk
qKCgrycrKyMtJSUmfAjsfqdpDjQa5ftXLlihXLl\
y9btnTp0iVLliyGgkUQsJgIAFW6EAQWgMB8EJgHBHNBYA4QzAaCWSAwEwRmAMF0EJgGAlNBYAoQTAaCS
ZMmTZw4ccKE/v4+pMBraqyvq6murCgrKQalRmCI\
pSYnJcTHRkdFhIUGBwX4+YLCydXFydHezsYaGD6mJsCwAQYMAGt9gJM="
_palette_delta :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM3NzAKeJwTEBIWEROXkJSWkZW
TV1BUUlZRVVUDAlVlJUV5OVlZGWlpKRCQlp\
aWASmBqFFT19DU0tHVNzA0NjWzsLKxc3Bycff08Q8Ki4xNSMnIKSipqGlo6ejpnzx91rxFS1euWb9528
69Bw4fP3X2wuVrN+8+ePzs5Zv3n7/9/Pvv7+9fP\
79/+/r508f37968fvXi2dPHjx7cu3PrxrUrl86fPX3i6OEDe3dt37Jx3arlSxbMnTVtcn9PR2tjXVV5c
UFORmpibFRYkL+3u4uDraWZkb62hqqSvIykuIiQ\
AB8vDzcXFzc3Dw8vH7+AINCbIqJiYuLiEhISkmAAZIiLi8srKCmrqqlramnr6ukbGBmbmJpbWFqDPeTm
4e3rHxgcFhEVE5eQlJKWkZWTV1BUUlZRWV1b39j\
c2t7Z3ds3YdKUaTNmzZk7f+HipctXrFqzdv3GTVu2bt+xc/eeffsPHjpy9NiJk6fPnLtw8fKVa9dv3r5
z78Gjx0+fv3z99t2HT1++/fj15+f3L58+vH398t\
mTR/fv3r55/eqlC+fOnDp5/Ojhgwf27dm9c8e2rZs3bVy/bu2aVStXLF+2ZPGihQvmzZ0ze+aM6dOmTp
40sb+vt7urs72tpbmxoa62uqqirLS4sCAvJyszP\
TU5MT4uJioiLCQowM/H29Pd1dnR3tba0tzUxMhAT0dLQ01F2d7JFRJvMQnJ6dl5RWVVtY2tnb0TgL6aO
Wv27Dlz5gLBvHnz5s+fv2DBgoULFy5atHjxkiVL\
ly5dtmz58hUrVq5ctWr16jVr1q5dt27d+vUbNmzYuHHT5s1btm4DhsEuUCAcOHj4yNHjJ04BQ+H8xUtX
rl6/cQsYDPcfPHz0+MnTp6ePH96/e9umdSuXLpw\
zY0p/d3tTXVVpYW5GSkJ0eDAwYp3trS1MDHS11JUVZKUlRIUF+Hi4ONjZWIGAjZ2Dk5uHj18QlIIlpYC
pE5J+gYkTmDq1tLV14EBbW1tLS1NDQ11NVQWYsB\
Xk5WSkpSTERUWEAGwPYP8="
_palette_dense :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM1NzgKeJx79uTRg/t3b9+6ce3
K5Yvnz505dfL40SOHDuzfu3vXju1bN2/asH\
7tmlUrly9bsnjhgvlz58yaOWPa1CmTJk7o7+3p7ursaG9rbWluamyor6utqamuqqqsqCgvLysrLS0tAY
JiNFACBqUgUAYG5WBQAQOVSAAuCFEDUo0wtaios\
LCwoCA/Py8vNzcnJzs7KyszMyM9PS01NSU5OSkxISE+LjYmJjoqMiI8LDQkOCgwwN/P18fby9PD3dXF2
cnRwc7WxtrSwtzsw/v3796+ef361csXz589e/rk\
8aOHDx/cv3f3zp3bt27euH792tUrly9dvHjh/LmzZ06fOnnyxPFjR48cPnTwwP59+/bu2b1r547t27Zu
2bxp44b169auWQ0KqqVLFi8CBta8ObOBoTV92pT\
J8OAChxY4sKqBIVVeWlJcVJifl5uTDXR7GtDliWBnRyM5GupmN4ij7UGutgI529TE2MjQ0EBfT1dHW0t
LU0NdTVVVRVlJSVFBXl5OVlZGRlpKSlJSQkJcXE\
xMTFRUREREGAiEgEAQCASAgB8I+Pj4QP4HBgAoBF69fPnixfPnwGB49vTp0ycg8BgMHuEFjxHgCRYAN+
IhMGAf3L8PDFtw4AJD9wYwdMHBCwtdaOACw3bvH\
lDIggIWGK7AYF2xfCkoBc6bCwxTUJBOnNDX293V0dba3NRQDwxNYGAWFxXk5WZnZaSlAsMxDhiK4WEhQ
YHAEPTyBMa5k6O9HTjGTU2MgOEGCjZQoKkAAFBh\
pGE="
_palette_diff :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM3NDAKeJw10WVbk2EAhuFv0qN
LSjqlBFFEkAaRnqO7YXQzcnSHwGgYcJCSks\
PRIgfS3aLUYMA2we8+79T7H5z3RUNLR8/AyASDMbOwsrGxc3BycXHz8PIJCAmLikvJyCkoPVNVU9fQfK
OjZ2BkYmpuaf3exs7BycXNw8vHHxkUEhYRFRMXn\
5iMTsvMzs0vLP5QhqmqqWtobG5p7+zq6RsYGsHhJ6Zm5uYXllbWNrd3D46+/zi7IFzf3JEov+4ffoM9P
NxTyKRb4jXh4uznyfHRwd7O1sbaytLiwvzc7MzU\
BH4MNzI0+Kmvt/tjZ3trS3Mjtr6upqoSU15aUlxYkJebnZWRlpqSnJiAiouJjgwPCwkODPD39fZ0d3V2
tLdFwK0szN6ZGBvq62prvX6l/uK5irKivJystKS\
4qLCQIL+ImISUtOxTeUVlFVW1l0Cqpa2rb2D01sTUzMLSGo6wsbN3dHJxdffw8vb1C0AGBYcCcnRsXHx
CUjI6NT0zKwewi0qAu6KqprYeC+StgN7d2z8wOD\
w6hp+YnJ4F+sXl1bWNrZ09yH96fkm4Jt7ekchkCoVCJpPubohXf/GH+7vbm+ury1T79OT4Z9zoMKD3dH
V2tFHltdWVFVR4fl5OVkY65I5HxcZERYSHBgchA\
/x8vD093FydnRzsbW0QcGsrC3NTgDcy0NfT0dbS1AB+NVUVZSUF6AEpCXFREYhraAxpreAIW3sorbunl
7ePr38AMjAoOCQ0LDwiMiomNg4Vn5CYnIJOTQPm\
bIAugNSl5ZiKymrgbsA2AXhbB5D39EH0EdwYfnxyeuYLwH9bWl5dh/T7h8cngH9BuCLeAD84gEyi6i/P
TwF+b2dzbWVx4evs9AQeNzLY39vV2dbShAW1MWU\
lRQW52Rlp6KQEFNCGgsZQYhcnBztq4X+BNf73lZGSFBcTFREWfiIkKCjAz8f3mJeHh5uLk4ODnY2VhRk
GY2JkoKejpXn0Bx9diU0="
_palette_gray :
256,1,1,1,x r. 100%,1,1,3
_palette_haline :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM3MDQKeJzT1NLS0tbW0dHRBQI
9EADSOtpamhrqaqrKSorycrLSUpISYqIiwk\
KCAvz8fLy8PDDAy8vHx88vICgkJCwiKiomLiEpJSUtIysnL6+gqKSsrKKqpq6uoQk0H2i6np6+gYGhoZ
GxsYmJqZmZubmFhaWllZW1tY2Nra2dnb2Dg6Ojk\
5Ozs4urq5ubu4eHp5eXt4+vn59/QGBQcEhoWHhEZFR0TFx8QlJySlp6ZlZObn5hUUlZRVVNXUNTS1tHV
2//xCnTZsyeu2DR0uWr1qzfuHnbjl179x88fPT4\
qTPnLly6cu3Gzdt37z98/PTZi1dv3r3/+Pnrtx+/fv+VkJCQBAIpIJCWlpaRkQU6H+R6VXUNLR09A0Nj
U3MLK2tbOwdHJxdXN3dPsKv8kd0UGwt0VSLQWal\
p6ekZmVnZObm5efkFhUXFxSWlZeUVlZVV1TW1dfX1DY1NzS2trW3tHZ1d3T09vX39EyZOmjxlytRp02f
MnDV7ztx58+YvWLho8ZKly5avWLly1eo1a9et37\
Bx0+bNW7Zu275j567du/fs3bf/wMGDhw4fOXrs2PETJ0+eOn3mzNlz585fuHDx0qXLl69cuXrt2vXr12
/cuHnz1q3bt+/cuXv33r379x88ePjw0aPHT548f\
frs2fMXL16+fPX69Zs3b9+9y84rKCotr6qpb2xp6+zumzB56vSZs+eC3AEBCxcuWDB//ry5c+fMnj1r5
swZM6ZPmzZ16pQpkydPmjRx4oQJE/r7+/v6+np7\
e3tAoBsEusCgEwE60EE7ArSBQSsItABBMxA0NTU1NjY0NNTX19XV1tbUVFdXVVZWVJSXlZWWFBcXFRYU
5Ofl5mRnZ2VmpKelpqQkJyUmxMfHxcbGxMREgwC\
Qjo2DxkpaekZWdm5eQWFxKTC1VNfWNzaDkktP34SJIL8CAPCjZIY="
_palette_ice :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM2NzUKeJxjZmFlY2Pn4OTi5uH
l4xcQFBIWERUTl5CUkpaWkZWTV1BUUlJWUV\
VTV9fQ1NLS1tHV1dM3MDA0MjI2MTE1NTM3t7CwtLSysrK2tgECWyCwIwbYA4GDg4Ojo6OTk7Ozi4urq5
ubu4eHp5eXt4+Pr5+/f0BgUFBwSGhYeEREZFR0T\
GxcfEJiUnJKalp6RmZWdm5efkFhUUlpWXllVXVtXUNjc0tbe2dXT1//xMlTp82YNWfegoWLly5fuXrt+
g2btmzbsWvPvgMHDx89fvL02fMXLl25duPW7bv3\
Hz5+8uzFK1ag5+G+h3gf7H9gAMjIggIAGALKoBBQA4aAJlIIGBubgP1vCfK7rZ090DNOzi6uQG94Aj0B
9APQC0AfhEPdD3M+0PU5IOcXFYOcXwF2f31DY1N\
zS2tbe0dnd09vX/+EiZMmT5k6bfqMmbPmzJ03f8HCRYuXLF22fMXKVavXrFu/YeOmzVu2btu+Y+eu3Xv
27tt/4OChw0eOHT9x8tTp02fOnjt/4eKly1euXr\
t+4+at23fu3r13/8HDR4+fPH32/MXLV6/fvH33/sPHT5+/fP32/cfPX7//CAmLiklISssAfaqkrKoGjG
UdXX0DI2NTMwtLaxs7e0cnF1d3Dy9vX/+AoGCgb\
6KiY+MTklJSgR7JycsvLC4pq6gERUFTc2tbR1d3b9+EiZOnAJ0+a/acuQiXg52+Zu26deuBzt+4adPmz
Vu2bNm6ddu27du379ixc+fOXbt27d69Z8+evXv3\
7tu3b//+AwcOHDx48NChw4cPHzly9OjRY8eOHz9+4sTJkydPAb15+syZs2fPnjt3/vyFCxcuXrx06fLl
y1euXL167dr16zdu3AR6/PadO3fvgbwO8jvU88i\
+h3n/LwAOEHZa"
_palette_matter :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM2MTUKeJz7+xcI/kDBbwj4BQE
/weAHCHwHg29A8BUEvgDBZyD49OnTRyD48O\
HD+/fv37179/bt2zdvXr9+/erVy5cvXrx4/vzZs6dPnzx5/OjRw4cP7t+/d/fundu3bt28cf36tatXLl
+6eOHC+XNnz5w+dfLE8WNHjxw+eGD/vr17du/au\
WPb1i2bN21cv27tmtUrVyxftnTxooUL5s2dM3vmjOlTp0yeNKG/r6e7q6O9rbW5qbG+rra6qqK8rKS4q
CA/Lyc7KyM9LSU5KSE+LiY6MiI8NCQ4KMDfz8fb\
y8PdzcXZydHeztbaytLCzNTEyNBA/+3rVy+fPwM68cF9oONu3gA67NJFoKtOnwK66cjhQwf2A120c8f2
rVs2bdwAdM+qlSvAzpk/b+7sWTOnT0NyTWtLc2N\
DfW1NdWVFWWlJUWFBXm5OVmZGWmpKUmJCfCzYNWGhwUGBAf6+QOd4At3jCnKQA9BFNiAnWZgDHWViDHS
Wgb6enq6OjraWlqaGhrq6mqqqioqyspKSoqKigo\
K8vLycnJysrKwMEEgDgRQYSEKABASIQ4EYGIiCgAgQCAOBEBAICgoKCAjw8/ND/LQc5qc5s2bOmAYM4o
lAT/V2d3UCw7gFGMYNwECuqaoEhnIpMJgLgeGcm\
wMM6UxgUKemAgM7EejBuLjYmJjo6KjIyIiI8PCwsNDQ0JCQkGAQCEIGYJFgoFQIUEVYWFh4eHhERERkZ
GRUVFR0dHRMTEwsEMTFxcUDQQIQJIJAEgQkowGI\
KEgBUCFQPdARsRBngNwBdgbQDUGgMPf38/UBBTsk3GEBDwAMSXdJ"
_palette_oxy :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM2NTYKeJyzd3RydnP39PL18w8
MDg2LiIqJjUtMSknNyMzOyS8oKi4rr6iqqa\
tvaG5pbevo7Oru6e0LDAgMDA4JCQ0Pj4iMigaqj09ISEpOTklLS8/IzMrOyc3LLygsKi4uLSsvr6yqrq
6tq2tobGoCGgAzoX/CxEmTp0ydNn3mzFmz586bP\
3/hosVLli5bvmLV6jVr163fsHHzlq3btu/YuXvP3n0HDh46dOToseMnT50+c+78hYuXr1y9duPmrdt37
91/8Ojxk6fPX7x89ebt+w+fPn/5/u3L54/v3719\
/frVq1cvIeAFEDx//vzZs2dPnz558uTx40ePHj18+ODB/fv37t29e+cOKxCwQQE7DED5rGDAwgJSws7B
xc3HLygkKibh6x8QGBQcEhoWHhERFR0dEwcMgMS\
k5JTUtPT0zKys7Ny8vPxCYACUAgOgAhgANbV1DcAAaAGFIDAAenp7+4D+nwTy/wyg/+cAAwDo/8Vg/wM
DAOT/TZu3QP2/dz8wAAj7/937T5+//vv75/fPH6\
BQ+PTh3ZvXL58/ffLowb27d25ev3b10sXz586cOnni6JFDB/fv3bN7x/ZtWzdt3LAO4n92dg4OTk4uLi
5ubh4eHl4g4AMCfhAAMYB8Hm5uLk5OTg4OdnZvs\
P+DQ8LC4AkgPjEpKTk1FSUBFJWUlpVVVFZW1dTW1jc0NgJTUGt7R2cnSgIABsCcuXPnLYAmgJXAAAAlg
E2bNoMSwK7de/bsAwbAYWAAnAAGwNlz585fvHT5\
yrXrN27evnP3HigAngED4DUwAD58fJSRlpIYExUe4uft4epgZ2NlYWZqYmRooK+ro6OtqamhrqaqqqKs
pKSoIC8vJysrIyMlJSkJADQjlG8="
_palette_phase :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM3MzYKeJxbvnLVmrXrN2zavGX
b9h27du/Zu+/AwUOHjxw9dvzEyVOnz5w9d/\
7CxUuXL1+5eu3a9Rs3bt66dfv2nTt37t69ew8OgJw7d27fvnXzxo3r165euXzp4vlzZ8+cOnn82JHDBw
/s27N75/atWzZtWLdm1YplSxYtmDdn5vSpkyf09\
XS2tzTV11ZVlBYX5GZlpCbFx0aFhwT5+3i6uzjZ21pZmBob6utqa2moqSorKSrIy8nKSEtJSoiLiYmKC
AsJCvDz8/Hy8HCDAA8vv4CQiJiktJyiirqWrqGJ\
hbW9s7uXX1BYVGxiSkZ2XmFJeWVNfWNzW0dXT9/EyVOnz5g1Z96CRUuWLS8vKy0pKS4qLMjPy83JysxI
T0tNSU5KTIiPjYmOiowICw0JDgzw9/Px9vJwd3V\
xdnSws7W2sjQ3MzE2NNDX1dHW0tRQV1NTBQM1NXUNTS1tHV19AyNjUzMLK2tbe0cnFzd3T29fv4Cg4NC
wiKjo2LiExOSUtPTMrOzcvILCouLSsvKKquqa2r\
r6hsam5pbWtvaOzs6u7u6e3t6+vv7+CRMmTJw4adKkyUAwBQimAsE0IJgOAjNAYCYMzAICCAsoOn36tG
lTp06ZPGnSxAn9fb29Pd1dnR3t7W2tLc1NjQ31d\
bU11VWVFeU8fKCQE5eUlpGTV1RWUVPX1NbR0zc0NoE639nFzcPLxy8gODQ8MjouITk1Iyu3oKi0orqus
aW9q3fC5Gkz5yxYvGzlmvWbtu7Yve/g4WMnT5+7\
cOnK9Zu379x78Ojx02cvXr56/ebtu/cfPnz89OnTZyD48uULiALyPn748P7d2zevX7188ezpk0cP79+9
c+vGtSuXLpw7c+rEsSOHgKkHmHg2b1y/dvXK5Us\
XL5w/d86sGdOmTAKmnq6OtpamhtrqyvKSooLc7Iy05ITY6IhQUPpxc7K3sTA10tPWUFVSkJWWFBeFphc
+XjTAwwMALchzkg=="
_palette_rain :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM2NzIKeJx79/bNm9evXr588fz
Z06dPHj9+9Ojhwwf379+7d/funTu3b9++de\
vmzRvXr1+7dvXK5UsXL5w/d/bMqZPHjx05dHD/3j27dmzfunnjhnVrVq9cvnTJogXz586eOWPalMkT+3
t7ujraWpsb62trqirKSooK83OzM9NTkxPjY6Mjw\
0ODAvx8vNxdnR3tbKwsTI0N9XW0NNRUlBTkZKQkxESFhQT4eXm4OTk42NlYWVlYmKGAhYWFlZWNnYOTk
4ubh5ePX0BQSFhEVExcQkJSSlpaRlZWTk5eQUFB\
UVFJSUlZWVkFDFQRQAUKlEFACQQUFd+CfA/0+5PHj4D+vnf3zu1bN64jefb0yRPHjx09cvjQoYMH9u/b
u3fP7l27du7csX37tm1bt27ZsnnTpo0bN2xYv37\
d2rVr1qxevWrlyhUrli9ftnTpkiWLFy9auHDBgvnz582bO2fO7NmzZs2cMWP69GnTpk6ZMnnypIkTJ0z
o7+vr7enp7urq7Ghvb2ttaW5uamyor6urramuqq\
yoKC8rLSkuKizIz8/LzcnOysxIT0tNTUlOSkyIj4uNiY6KjAgPCw0JCQ4KDPD38/Xx9vL0cHdzdXF2cn
Swt7OztbG2srQwNzM1MTYyNNDX19PV0dbS1FBXU\
1VRVlJUkJeTlZGW+vTx/bs3oBB48vjhg3t3b9+8ce3KpQvngP4+fvQwMI537wRF8fq1oBhevHD+vDmzZ
k4HxvCkiUC390Jc3tHeBnQ62O2NDWDX19bUVFdX\
gX1QXlZWWlpaUlJcXFRUWFhYUAD0DNA7IJCLCfIwAFwqBwyygSALCDIzMzMy0tPT00ABkpIMDJLEBGCg
gEIFFCzgcAmGhAs4YMAhAwoaUNgAA8cWGDjA0LG\
0AADLhGRy"
_palette_solar :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM1OTUKeJwzNjE1t7C0sra1s3d
wcnZxdffw9PLx9fMPDAoOCQuPiIyOiY1LSE\
xKTk1Lz8jKzsnNLygsKiktK6+oqq6pratvbGpuaW1r7+js6u7p7eufMHHS5ClTp02fPmPmrNlz5sydN3
/BgoWLFi9ZsnTZsuUrVq5ctXr1mrVr161fv2Hjx\
k2bN2/ZsnXbtu3bd+zcuWvX7t179uzdt2///gMHDh48dOjw4SNHjh49duz48eMnTpw8eerU6dOnz5w5e
/bsuXPnz5+/cOHixYuXLl26fPnylStXrl69eu3a\
tevXr98AgptAcAsIbgPBHRC4CwL3wOA+DDyAA2EREVFRUTExcXFxCQlJSUkpKWlpaRkZGVlZWTk5OXl5
eQUFBUVFRSUlJWVlZRUVVVVVNTU1dXUNDU1NLS1\
tbR0dXV09PX0DA0MjI2MTE1MzcwtQaNrYgMLT0ckZGKJuoCD1BoVpAChQQ0GhGgUK1nhQuKaAAjYTFLJ
5+YVFxeCgrQSGbV19AzRsYUELCVlQuAKDFRSoS4\
Ehumo1MDQ3bNwMDMjtO3ft3rNv/4GDh48cPXbi5KnTZ8+dv3Dp8pVr12/cun3n3v0Hjx4/efb8xavXb9
69//Dp89dv33/++vMX7GuQp8F+RvMyyM9gb2MCs\
ARICVClIlADUJs8UDcw2IAGAYNQWkpKChickhJAAAxbcTEgEAUBEQgQRgAhKECIQJSIgiMGGjVIcQNyJ
tSRQBeC4gQaI9AIAcaHvoGhoZExOEIgMQKOEmCc\
ACMFGCsuwFgBRgswXrwAsPY3cQ=="
_palette_speed :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM2OTkKeJz79+/vnz+/f/36+eP
H92/fvn758vnTp48fPrx/9+7tm9evX7188e\
L5s6dPnzx+9PDB/fv37t65fevmjevXrl65fPHC+XNnT586eeLY0cOHDu7ft2f3zh3btm7etGH92tWrVi
xfunjRgnlzZ8+cPm3KpIn9vd1dHW0tzY31tTVVF\
WUlxYX5udlZGWkpSYnxsdGR4WEhQQF+Pt6e7q7OTg52NtaW5qYmRgZ6utpaGmqqykoK8rIyUpISYqIiw
kKCAvx8vLw8PNzc3FxAAKS4eXh4eHn5+Pj5+QUE\
BAWFhISFRUREREVFxcTExIFAAgwkkQFECCQpDvT7z+9Af3/+CPTz2zdADwP9C/YtyLNQv14Ce/YMyLfH
jx09cgTo4QP79+3bu2f3rl07d2zfvm3r1i2bN2/\
auHHD+vXr1q5ds3r1qlUrV6xYvnzZ0qVLlixetGjhwgXz58+bN3fOnNmzZ82cOWP69GnTpk6ZMnnSpIk
TJ/T39/X29nR3d3V2drS3tbW2NDc3NTY21NfV1t\
ZUV1VWVpSXlZaWFBcVFuTn5+XmZGdlZqSnp6WmJCclJsTHxcbEREdFRoSHhYYEBwUG+Pv5+nh7eXl6uL
u5ujg7OTrY29naWFtZWpibmZqYGBsZGujr6epoa\
2lqqKupqigrnz114tiRQwf27dm5fevmjcC4W7FsCTDm5sycPnXyxP4eULQBY626srykqCAvJys9NRkUZ
RGQGPPycHOBRZgxMMJ0tDU11FSUFRXkQBEmDoww\
SHzxcHNxcrCzs7GxsUIAGxs7OwcHJycXMPJ4+UDxJgSMNFFgfElISklJy8jIysnJKygoKiopK6uoqKqq
qamrq2toaGhqamppaWmDgA4WAJYAKtACqgOqBup\
RU1NVVQF6U0lJUVFBXl4O6DAZaSlgYpIAug6UngAQezcr"
_palette_tarn :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM3NzkKeJwBAAP//BYYGRocHR4
fISIjJCUnKCkqLC0uMDIzNjk8PkFER0lMT1\
JUV1pcX2JlZ2ptcHJ1eHt9gIOGiYyPkZSXmp2go6aprK+ytbi7vsHDxsjKy8zNzs/Q0dLT1NXW1tfY2d
rb3N3e3+Dh4uLj5OXm6Onq6+zt7u/w8fP09fb3+\
fr7+/z8/Pz7+vn39vTy8O7s6ujn5ePh39za19TRzcrHxMC9ure0sa6rqKWin5yZlpOQjYqHhYJ/fHl2c
3BtamdjYF1aV1RQTUpHQ0A9Ojc0MS4rKSclIyIh\
IB8eHh4dHRwcGxsaGRkYFxYVFBQTEhEQDw4NDAsKCgkICAkJCgsMDQ4ODw8jJSYoKiwtLzEzNDY4OTs9
P0BCREVHSEpLTE1PUFFSU1RWV1hZWltcXV9gYWJ\
jZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4CCg4WHioyOkJOVl5qcnqGjpaeqrK6xs7W4ury/wcP
GyMrNz9HU1tnb3eDi5efq7O7w8vT29/f39vXz8v\
Du7Onn5ePh393b2dfV09LQz83MysnHxcTCwb++vLq5t7a0s7GwrqyrqaimpaOioJ+dnJqZmJaVk5KQj4
2MiomHhoSCgX9+fHp4d3VzcW9ubGpoZmRiYV9dW\
1lXVlRSUE5NS0lHRUNCQD48Ojg2NDIwLiwqKCYkIiAeDQ0ODg8PDw8PDxAQEA8PDw8PDg4NDAwLDA0OD
xARERITFBUWFxgZGhscHR0eHyAhIiMkJCUmJygp\
KiorLC0uLzEyMzQ1Nzg6PD5BREdLT1NWWV1gZGdrbnJ1eHx/g4aKjZGUmJufoqaprbC0t7u+wsXJzdDU
19ve4uXo7O/x8/X19PLw7erm49/c2NTQzcnFwr6\
7t7Sxr6yrqainpaSjoqGgn56dnZybmpmYl5aVlJOSkZCPjo2Mi4uKiYiHhoaFhISDgoKBgYB/f35+fX1
8fHt7enl4eHd2dXRzcnJxcG9ubWxsa2ppaWhnZm\
ZlZGRjYmJhYWBfXl1cW1lXVVNRT1vRd4w="
_palette_tempo :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM2OTgKeJz79/fPr5/fv339/On
j+3dvXr968fzpk8cPH9y7e+fWzevXrly+dO\
H82TOnTh4/duTwwQP79u7etWP71i2bNq5ft2bVyuXLlixaOH/unFkzp0+dMmlCX293Z0dbS1NDfW11ZX
lZSVFBXk5WZnpqcmJ8bHRkeGhwoL+vt6e7q7Ojv\
a21pbmpsaG+no6WhpqqspKCvKyMlKSEuJioiLCwkJCgoKAAGAAZgkJCQsLCwiIiIqKiomJiYuLi4hISE
pJAIAUG0jAggwDSCABRJCUJBhIgADRAXAwEgOaJ\
inz9AvT5h/fv3r0Fev7li+fPngL9/+jhg/v3gUFw+9atmzeuX7t2FRgOly5eOH/+3NkzZ06fOnnyxPFj
x44eOXz40MGDB/bv37d3z57du3bt3LFj+7ZtW7d\
s2bxp08YNG9avW7d2zerVq1auXLF8+bKlS5csXrRo4YIF8+fNnTtn9qyZM2dMnzZ16pTJkyZOmNDf19v
T3dXZ2dHe1trS3NTYUF9XW1tTXVVZUV5WWlJcVF\
iQn5ebm5OdlZmRnpaakpyUmBAfFxcbEx0VGREeFhoSHBQYGODv5+vj7eXp4e7m5uri7OToYG9na2NjbW
VpYW5mamJsZGigr6+nq6OtpamhrqaqoqykqCAvJ\
/sFEu8vXzx7+vjRg/tAP9+8AfTvpYtAv54GxftRoCeBEb9n906g77ZuBvoMGPdAX60A+gnopYUgD8H9M
wXkn4kT+oEeAvqouwvkp4729ra21tbWlpZmIGhq\
amoEgQYQqAeBOjCoBYIaIKgGgqqqqsrKyoqKivLy8rKy0tLSkpLi4qKiosLCgoL8/DxQUORkZ2dlZQKD
Iz0tLTU1BRgkSYmJCeBQAQZLdFRUJDBkwsOAYRM\
SHBwUFBgQ4O/vBwwgH29vL2AYebiDQsnVxcUZADWmb3w="
_palette_thermal :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM3MTgKeJxjZgEBVhBgY2NjZ+f
g4OTi4ubh5eMXEBQSERWTkJKWlVdUVlXX1N\
YzMDI1t7S2tXd0dnX39PLx8w8MDgkLj4yKiY1PSExOSUvPyMrOycsvKCouLSuvrKquratvbGpubWvv7O
rp7ZswcfKUadNnzJo9d96ChYuXLFu+ctWates3b\
Nq8dduOnbv37Nt/8NCRo8dPnDp99tz5i5euXL124+btO3fvPXj46PHTZ89fvHz1+s3bd+8/fPz46fPnL
1+/fvv2/fuPHz9//vwFAr/RAVgUKPvzx48f379/\
+/bt69cvXz5//vTp48cP79+/e/f2zevXr16+eK6srKKqpqauoaGppaWtraOjq6enr29gYGBoaAQExqgA
KmBiYmpqZmZubmFpaWVtbWNra2dv7+Do5OTs7OL\
q6ubu7uHp6eXl7ePj6+vn5x8QEBgYFBQcHBISGhoWFh4eEREZGRUVHR0TExsbGxcXH5+QkJiYmJSUnJy
SkpqalpaenpGRmZmVnZ2Tk5sHDMyCwqLikhJggF\
YAQ7QGGKQNTc0tre0dnd09vf0TJoHCdOasOXPnL1y0ZOnyFZAg3bJ1+45de/aCQvTY8ZOnz5y7cPEyMD
xv3b57/8GjJ0+fv3z15t2Hj5+/fvvxyxgYpVY2d\
g5OLm6e3r7+gSFhEVGx8Ukp6Zk5eYUlZZU1dY0tbZ09fRMnTwXaM3vu3HnzoWDevLlz58yZM3v2rFkzZ
86YMX36tGlTp06ZMnny5EmTJk2cOGHChP7+/j4g\
6O3t7enp6e7u7urq6uzs6Ohob29ra21tbWlubmpqbGyor6+rramprqqsqCgvKy0pLiosyM/LzcnOzEhP
S01JSkyIj42JjooIDwsNDgoM8Pfz8fby9HB3c3V\
1cXZydHSwt7ezs7O1tbVBAkAuUBAYKw6OjrBo8fDwBEYKME78AwKDgkNAkRERGQUARdd09g=="
_palette_topo :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM2OTEKeJxT19TS1tXTNzQyNjE
1s7C0sraxtbWzt3dwcAQBBwcHe3s7OztbCA\
Cy7MFyTk7Ozi6urm7u7h6enl7e3j6+fn7+AYFBwSGhYRGR0TFxCUkp6Zk5+UVllbWNrZ29E6fOmrd4+e
oNW3bsPXj05LlL127de/Ts9fvP33/z8vELCAoJC\
4uIiolLSEpKScvIysopKCqpqGvpGhibWVrbOTq7eXr7BQaHRUbHJSSnZWTnFRSXVVTXNTS3dXT3TZg8b
ebseQuXLF+5Zv2mrTt27zt46PDRY8dPnDx1+szZ\
c+cvXLp85eq16zdu3rp95979Bw8fPX767PmLV6/fvHv/8dPnr99/SEmDrFNWUVMHB4SBobGJmbmllY2t
vaOzq5uHt69/YHBoRBTYR2mZ2bn5hcWl5ZXVtfW\
NTS1tHV09fRMmTZk2Y9ac+QsXL12+cvXa9Rs3b92+c/fe/QcPHz1+8tSZcxcuXr567cZNkPVg21+8fP3
m7fsPQMu//fj5+4+qmoaWDjD8jYGhD7HVxc3DC2\
htQCAwMMMjIqNiYuPiE5OSU1LTMzKzcnLz8guLikvKyisqq2tq6xoam5pb29o7urp7+vonTJw0ZSrIMf
MWLFoCdcy2Hbv27AO5BeSUy1ev37pz78Hjp89fv\
Xn/8fO3H7/+6ugZmphb2tg7uXp4+wWFRkTHJ6UCI664rLKmvqm1vbO7F2zupMmTp0yZOnXatGnTp8+YM
XPmzFmzZs+eM2fu3Lnz5s2fv2DBgoULFwHBYgwA\
FVyyZOmy5StWrlq9dt0GRAgdO3EKGPHAmAdHvZS0tLQMMPqBCQAM5MHxoqEJS59m5uagBGptYwNLiSjA
DgIcXDx8/IPDomITUzKywQmwoaW9u2/S1JlzFix\
evmrdxq079xw4fPzUuUtXb9558AQAVgJv5Q=="
_palette_turbid :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM1OTQKeJxl0Pk/E3Acx/E/BFu
OzJhhNptNrghRUVFJ931fdN/RhQ4idLgyW0\
JpRIbNLptdds8utskenY+u3/t8tz2kR6+/4P18ezzz8x/m5txul8vpnJ2dcTjsdpvNarVYpqfNZrPJZD
QaDHq9TqfVajSaqSm1WqVSKpUKhVw+OSmTyaTSi\
QmJRCwWiYRCgWB8nM/n8cbGRkdHuNzh4fdDQ4OD7wYG+jmct319b1739vZ0d7/qeslmszqZzI4X7W2tr
S3Nz589fdLU1NjwuL7uUW3Nwwf371VXV1XevXP7\
1s2K8hvXr129cvnSxQvnz509U1Z66uSJ48eOHjl86OCB/fv27tm9a+eO7du2bikp3rRxQ1Hh+nVrC/LX
rF6Vl7syJztrRWbG8vS01JTkZUkMeiKNmkAhx5P\
iYmOI0YSoSHwELnxpWGjI718/f3z/9vXL508fPXCE2+WccdhtVsu0yWjQ67QatUqpkE/KpBKxSCgY5/P
GRrjAAlQ/B4F6vBxWp9fip/wjWQxZkADldFmpD4\
M0iIM8CAQiRAJTyeZiYIGrqBBkQCvIBxzo8nLBl5OdnQXEzAxApqcBMyUZoEkMBh2sNCpoKWTwkuJADO
RoAqBBHYEDN8BDQ4KDl2CxmC42i9nR3tbSDMsbG\
+rramtgdVUlbK4oh+thr/949Lv39oXXYZ/vdf/t6Hd0/MIuGIaWpcI2GAfzUEm+GH+j/1fi4mj+qL4SU
BQUGYqHSAgJzFiAxhCJYAUsIQq4kXi8V4wLR+Yw\
pEZscGMxmKCgwMCAgD/8NVg7"
# The color palettes below comes from the LoSpec palette list 'https://lospec.co
m/palette-list'.
_palette_aurora :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM2ODYKeJxt0kFo01AYB/B3qYw
waDbCaEG6aS4T3ME4qJrgVpCiLUqolEgYbI\
QirIce9kQLknXbZSplWaGMSaeUYWU0g21QD0XbFLaasimMQqmUOiyBHiyOemgZZfpMql7Ew/v43vtOv+
//QN/5yze89x89eZ58++HzMQJjQJnXizmktH4gh\
JSQN6SgbqO/bgHgfnfwejYwG88d1hqtdivEwSVZ1U60PQnSDiitv1Er31R5Cd5zWkmapTnok9ZrKXmRN
dtI2ifJalbekDiONg/Stzj4UJIPNVmCHOOckWS5\
gbRaWS3suqnhcSFRKaEWaqNyJRWfvCuEN3fqCBViK9DPDA/1EhghuoHpbH//GTDC+CNesQc3DZgBBSzk
tGuZzwZdAoMDspedWlzLpMvlkzqqZDJh3uegvPE\
CQp3TemY1Av7xG9iuXz/zOaMjxkLGo/KnilvJeHQhMB18FkumCzVAO7xQkovqS8iN/PVralYSWRvL+fR
RTv10cqylxGl9rG/qe1FNG2Cr4Q/o/opmrIOkxj\
kOblbVdFwS+eEBzGIhhjwML2QSsQDvplhhLrpTKn1FzWphIzDqnFgp11EznwpfWd07avxEjXr5aI2/aH
f5PP7gi1fb+XSAdzBncfwcjlMOIZLYfQ89Qxdww\
kIAzGoFrD9+zYaPEv/zG0xWzx8ddP3GJhS9GPnrAeSeLkcXpyZnHojh2FYR0Yzhr8iQowdJmvPqMaqy5
OWuU2Y7zeoRL0jrnf380qSTdHb9Ta2qqhIc0b+G\
lNzXvw4yrr/zr7W0YjYdj9hJWx/AcBdGCZcYMwZMBAZ4gPG4y+G0mkyEqafXhGGQJ9g71FzEv5H4iFCz
dDThEddW2pnqrk7oNFG7VclEb24fFg1S5xShLyi\
ffewTnPaFoJJPh4NXb9t/Aejmgpc="
_palette_hocuspocus :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM2MzQKeJxjk3x5buu8lopLu5f
0lsV5mHk7WxlpKkrINhWlhnla6iotmtpakR\
Ht7b5oUlNRUpCT+anN87qK4jzteqtz4/wdjVRfXNy1pK880UdUiJ+Xi52VyUJTXpSPg1ns57Vt08sjLG
TeHp5bFW2vovrr3qFVfWVRLk9Ob53TmhMW8OT0p\
tlNOUF2DASAqIiwkKAAPx8vDzcXFycH+9PrZw5uW71g+uJpnQ1lWQkRMGW/Hp3aNKspK1wUAjR/3Tu2b
lpdWsDzFy9fv3n3/uOHG4fXz2orjGfklTN0DEwq\
bZ26bOfJm6/+MIg83t2fZq1amRUb6GiqIQu0go2NlUVgamtpWpibuUZ+Upifq6WBfn1xerSfk5n29Lay
tDB3c8OOyowoL0sdhRktxUlBrqYWx3fPbczwMZD\
ePK0ywdtcWevjkRnFweYy3Dc29GT7mcrIf9ndGW+rxM0Mda/AgcWdBVHuRqpk+n9qX3NFYWZ8eKCosCA
fDxcHO5Dm5+XmZP9258jKSeUJEcBwnt9ZHOt5cP\
Oymf1NpSncvHwCgkIiouj+F5adluOmIchflwfyhqbslb3LJlQm+bismNJSkOBjo1eQHO4P9L/pjiVTmv
Pj/ewXT2goiPGxNN+zfEp9TpiLcU9lZoyPvZGqi\
CAo+pkZfz29sHvZxJriO1vA/uZ+cnhZZ7afoQjMP0yioiIiIsLCwkJCQoKCggLK3z69evbo3q1rl86dO
nZo365tm9YuWzRv1rRJfV1tTXVVZc115cX52enJ\
8dHhwf7e7s6/P715/vDOtQtH9+3avnn9mhVPz+9cPLE61R/mf3h6gMY/AyMzCxs7hxyu+AcA2aYUlw==
"
_palette_srb2 :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM0OTcKeJz7//398/vXzx/fv33
98vnT+9vry/PT48P93e3N9dXlxfnZGcAS0/\
ra6kpzU2NDfJz3b169eDZIXXZ8sLe9sfZ/GIAYdBrG/fz0xul9G5dMh8ufX9+f76/P///19cPrZ7cXw4
Tf3z+/f/38/vr8eH97fXn+/5+f3z69f/NyqIWh5\
QWZiVFB3s42prpqckD33Du+dmpNipcRAxT8/39///z6ePuXR+aWhzjqSV/dv2pqQ1Yo2Pkg+efH1vYUB
xlKMKCB89vnt+eH26v/J+T/5QtmTOhsrCzKSooK\
BjrDuLo4Pzs5PjzY390ZqEZb+fXj25eB2neDgmVyd3P9uzund66Y3gZ2vK+rrRmG/2/vnl0d7awNcbY8
uru2L+6vzo72t9dTV5AU4mZl+P/hwYUDGxZMaCh\
ICHAwUOD//+TE2knlUfZQb8vnQ/XB/P/x9eO7186f2D+3vzx+P1ABDv//h4c3If/3dzRUFILiwMvJ2lh
bRdob6G9rc2N9bXVleWlxYf77l4/v3rx89uTm6u\
Ls5Ohg/zs7p5eGmknCbXoP9TeMXxzurC8vzM5AwP8wvr+3m6ONuZGuhrKcpAg/F8uKKQ3ZES4Gsujx//
nhud3Lm2NMYKENEgX5Hx78z89tndOSHeRvb64uz\
8/+Hxb/ADJVV38="
_palette_uzebox :
base642img \
"MSB1bnNpZ25lZF9jaGFyIGxpdHRsZV9lbmRpYW4KMjU2IDEgMSAzICM1Mwp4nGNQ8ciduO3Wf4aRSkO
BChR4QEEuFEyEgm1QcAsK/kPBcNFPLgilEK\
yiEPynEAAA16V90A=="
#@cli pseudogray : _max_increment>=0,_JND_threshold>=0,_bits_depth>0 #@cli pseudogray : _max_increment>=0,_JND_threshold>=0,_bits_depth>0
#@cli : Generate pseudogray colormap with specified increment and perceptual thr eshold. #@cli : Generate pseudogray colormap with specified increment and perceptual thr eshold.
#@cli : If 'JND_threshold' is 0, no perceptual constraints are applied. #@cli : If 'JND_threshold' is 0, no perceptual constraints are applied.
#@cli : Default values: 'max_increment=5', 'JND_threshold=2.3' and 'bits_depth=8 '. #@cli : Default values: 'max_increment=5', 'JND_threshold=2.3' and 'bits_depth=8 '.
#@cli : $ pseudogray 5 #@cli : $ pseudogray 5
pseudogray : check "isint(${1=5}) && $1>=0 && ${2=2.3}>=0 && isint(${3=8}) && $3 >0" pseudogray : check "isint(${1=5}) && $1>=0 && ${2=2.3}>=0 && isint(${3=8}) && $3 >0"
e[^-1] "Generate pseudogray colormap with increment $1, JND threshold $2 and $ 3 bits depth." e[^-1] "Generate pseudogray colormap with increment $1, JND threshold $2 and $ 3 bits depth."
# Generate all possible sRGB colors with given increments. # Generate all possible sRGB colors with given increments.
{round(2^$3)},1,1,3,'x' {round(2^$3)},1,1,3,'x'
skipping to change at line 9192 skipping to change at line 9609
elif s==1 r 100%,100%,100%,4 sh. 3 f. 255 rm. elif s==1 r 100%,100%,100%,4 sh. 3 f. 255 rm.
fi fi
endl done endl done
#@cli transfer_histogram : [reference_image],_nb_levels>0,_color_channels #@cli transfer_histogram : [reference_image],_nb_levels>0,_color_channels
#@cli : Transfer histogram of the specified reference image to selected images. #@cli : Transfer histogram of the specified reference image to selected images.
#@cli : Argument 'color channels' is the same as with command 'apply_channels'. #@cli : Argument 'color channels' is the same as with command 'apply_channels'.
#@cli : Default value: 'nb_levels=256' and 'color_channels=all'. #@cli : Default value: 'nb_levels=256' and 'color_channels=all'.
#@cli : $ image.jpg 100,100,1,3,"u([256,200,100])" +transfer_histogram[0] [1] #@cli : $ image.jpg 100,100,1,3,"u([256,200,100])" +transfer_histogram[0] [1]
transfer_histogram : check ${"is_image_arg $1"}" && ${2=1024}>0" skip "${3=0}" transfer_histogram : check ${"is_image_arg $1"}" && ${2=1024}>0" skip "${3=0}"
mode="$3" channels=${"_ac_list \"$3\""}
if isnum("$3") if isint("$3") e[^-1] "Transfer histogram from image ["${"pass$1 -1"}"] to image$?, "\
mode=${arg\ 1+$3,all,rgba,rgb,rgb_r,rgb_g,rgb_b,rgba_a,\ "with $2 levels, for channels '"$channels"'."
lrgb,lrgb_r,lrgb_g,lrgb_b,\ pass$1 1 sref={s} rm.
ycbcr_y,ycbcr_cbcr,ycbcr_cb,ycbcr_cr,ycbcr_cg,\ to_colormode[^-1] $sref
lab_l,lab_ab,lab_a,lab_b,\ if ['$channels']!='all'
lch_ch,lch_c,lch_h,\ pass$1 {$sref==3?2:0}
hsv_h,hsv_s,hsv_v,hsi_i,hsl_l,\ to_color
cmyk_c,cmyk_m,cmyk_y,cmyk_k,\ ac. "+store _transfer_histogram_reference",$channels rm.
yiq_y,yiq_iq} ac "_transfer_histogram $2",$channels,1
fi fi else
e[^-1] "Transfer histogram of image $1 to image$?, with $2 levels on channels pass$1
'"$mode"'." store. _transfer_histogram_reference
if ['$mode']!='all' repeat $! pass$1 # Small geometric hack to be able to use repeat $! _transfer_histogram[$>] $2 done
'apply_channels'.
w0,h0,d0,s0={$>,[w,h,d,s]}
w1,h1,d1,s1={-1,[w,h,d,s]}
to_colormode[$>] {s}
a[$>,-1] x
ac_arg="+z "$w0",0,0,100%,"{[$h1,$d1]-1}" r.. "$w0,$h0,$d0",100%,0,0 _tran
sfer_histogram $2 rm."
apply_channels[$>] {``$ac_arg},$mode,0
r[$>] $w0,$h0,$d0,$s0,0
done
else repeat $! pass$1 _transfer_histogram[$>,-1] $2 done rm.
fi fi
_transfer_histogram_reference=
_transfer_histogram : _transfer_histogram :
$_transfer_histogram_reference
repeat min(s#0,s#1) repeat min(s#0,s#1)
sh $> sh $>
+histogram[-2,-1] $1 cumulate[-2,-1] /.. {-2,i[-1,2]} /. {i[-1,2]} +histogram[-2,-1] $1 cumulate[-2,-1] /.. {-2,i[-1,2]} /. {i[-1,2]}
f.. "* f.. "*
const w1 = w -1; const w1 = w -1;
val = i; X = x; val = i; X = x;
val<i[#-1,X]?( val<i[#-1,X]?(
step = int(X/2); step = int(X/2);
while (X && step>=1, nX = max(0,X - step); val<i[#-1,nX]?(X = nX):(step = int(step/2))); while (X && step>=1, nX = max(0,X - step); val<i[#-1,nX]?(X = nX):(step = int(step/2)));
X?(vc = i[#-1,X]; vp = i[#-1,X - 1]; (vc - val)>(val - vp)?--X); # Round ing X?(vc = i[#-1,X]; vp = i[#-1,X - 1]; (vc - val)>(val - vp)?--X); # Round ing
):( ):(
step = int((w1 - X)/2); step = int((w1 - X)/2);
while (X<w1 && step>=1, nX = min(w1,X + step); val>i[#-1,nX]?(X = nX):(s tep = int(step/2))); while (X<w1 && step>=1, nX = min(w1,X + step); val>i[#-1,nX]?(X = nX):(s tep = int(step/2)));
X<w1?(vc = i[#-1,X]; vn = i[#-1,X + 1]; (val - vc)>(vn - val)?++X); # Ro unding X<w1?(vc = i[#-1,X]; vn = i[#-1,X + 1]; (val - vc)>(vn - val)?++X); # Ro unding
); );
im#-3 + (iM#-3 - im#-3)*X/w1" im#-3 + (iM#-3 - im#-3)*X/w1"
n[-4] 0,{w-1} round[-4] map[-4] .. n[-4] 0,{w-1} round[-4] map[-4] ..
k[0,1] k[0,1]
done done
rm.
#@cli transfer_pca : [reference_image],_color_channels
#@cli : Transfer mean and covariance matrix of specified vector-valued reference
image to selected images.
#@cli : Argument 'color channels' is the same as with command 'apply_channels'.
#@cli : Default value: 'color_channels=all'.
#@cli : $ sample lena,earth +transfer_pca[0] [1]
transfer_pca : check ${"is_image_arg $1"} skip "${2=all}"
channels=${"_ac_list \"$2\""}
e[^-1] "Transfer mean vector and covariance matrix from image ["${"pass$1 -1"}
"] to image$?, "\
"for channels '"$channels"'."
pass$1 1 sref={s} rm.
to_colormode[^-1] $sref
if {$sref==1} # Scalar case can to be solved more easily
pass$1
var_ref,avg_ref={[iv,ia]} rm.
repeat $! l[$>] - {ia} * {sqrt($var_ref/iv)} + $avg_ref endl done
elif ['$channels']!='all'
pass$1 {$sref==3?2:0}
to_color
ac. "+store _transfer_pca_reference",$channels rm.
ac "_transfer_pca",$channels,1
else
pass$1
store. _transfer_pca_reference
repeat $! _transfer_pca[$>] done
fi
_transfer_pca_reference=
_transfer_pca :
$_transfer_pca_reference
f.. "*begin(
cov = [ "${"covariance_colors[0] _avg"}" ];
avg = [ "$_avg" ];
eig = eig(cov);
lambda = 1/sqrt(1e-6 + eig[0,s]);
rot = mul(diag(lambda),eig[s,s*s],s);
cov_ref = [ "${"covariance_colors[1] _avg_ref"}" ];
avg_ref = [ "$_avg_ref" ];
eig_ref = eig(cov_ref);
lambda_ref = sqrt(eig_ref[0,s]);
rot_ref = mul(transp(eig_ref[s,s*s],s),diag(lambda_ref),s);
M = mul(rot_ref,rot,s);
);
avg_ref + M*(I - avg)"
rm.
#@cli transfer_rgb : [target],_gamma>=0,_regularization>=0,_luminosity_constrain ts>=0,_rgb_resolution>=0,\ #@cli transfer_rgb : [target],_gamma>=0,_regularization>=0,_luminosity_constrain ts>=0,_rgb_resolution>=0,\
# _is_constraints={ 0 | 1 } # _is_constraints={ 0 | 1 }
#@cli : Transfer colors from selected source images to selected reference image (given as argument). #@cli : Transfer colors from selected source images to selected reference image (given as argument).
#@cli : 'gamma' determines the importance of color occurrences in the matching p rocess (0=none to 1=huge). #@cli : 'gamma' determines the importance of color occurrences in the matching p rocess (0=none to 1=huge).
#@cli : 'regularization' determines the number of guided filter iterations to re move quantization effects. #@cli : 'regularization' determines the number of guided filter iterations to re move quantization effects.
#@cli : 'luminosity_constraints' tells if luminosity constraints must be applied on non-confident matched colors. #@cli : 'luminosity_constraints' tells if luminosity constraints must be applied on non-confident matched colors.
#@cli : 'is_constraints' tells if additional hard color constraints must be set (opens an interactive window). #@cli : 'is_constraints' tells if additional hard color constraints must be set (opens an interactive window).
#@cli : Default values: 'gamma=0.3','regularization=8', 'luminosity_constraints= 0.1', 'rgb_resolution=64' and \ #@cli : Default values: 'gamma=0.3','regularization=8', 'luminosity_constraints= 0.1', 'rgb_resolution=64' and \
# 'is_constraints=0'. # 'is_constraints=0'.
skipping to change at line 14413 skipping to change at line 14872
compose_channels + >= 50% repeat $! l[$>] compose_channels + >= 50% repeat $! l[$>]
do do
+rand[0] 0,1 *. [0] ({[xM,yM]}) rm.. # Select one starting point in the m ask. +rand[0] 0,1 *. [0] ({[xM,yM]}) rm.. # Select one starting point in the m ask.
+flood[0] {^},0,0,0,1,2 >=. 2 +negate. *.. 15 a[-2,-1] c +flood[0] {^},0,0,0,1,2 >=. 2 +negate. *.. 15 a[-2,-1] c
flood[0] {-2,^},0,0,0,1,0 flood[0] {-2,^},0,0,0,1,0
_generate_maze {w},{h} _generate_maze {w},{h}
while iM#0 while iM#0
rm[0] + _render_maze. $1 nm. [maze] rm[0] + _render_maze. $1 nm. [maze]
endl done endl done
#@cli newton_fractal : z0r,z0i,z1r,z1i,_angle,0<=_descent_method<=2,_iteration_m
ax>=0,_convergence_precision>0,\
# _expr_p(z),_expr_dp(z),_expr_d2p(z)
#@cli : Draw newton fractal on selected images, for complex numbers in range (z0
r,z0i) - (z1r,z1i).
#@cli : Resulting images have 3 channels whose meaning is [ last_zr, last_zi, nb
_iter_used_for_convergence ].
#@cli : 'descent_method' can be { 0=secant | 1=newton | 2=householder }.
#@cli : Default values: 'angle=0', 'descent_method=1', 'iteration_max=200', 'con
vergence_precision=0.01', \
# 'expr_p(z)=z^^3-1', 'expr_dp(z)=3*z^^2' and 'expr_d2z(z)=6*z'.
#@cli : $ 400,400 newton_fractal -1.5,-1.5,1.5,1.5,0,2,200,0.01,"z^^6 + z^^3 - 1
","6*z^^5 + 3*z^^2","30*z^^4 + 6*z" \
# f "[ atan2(i1,i0)*90+20,1,cut(i2/30,0.2,0.7) ]" hsl2rgb
newton_fractal : check "isin(${6=1},0,1,2) && ${7=200}>=0 && ${8=0.01}>0"
skip "${4=0},${9=z^^3-1},${10=3*z^^2},${11=6*z}"
m0,m1,m2=secant,newton,householder
e[^-1] "Draw newton fractal on image$?, for complex range ($1,$2)-($3,$4), wit
h angle $5, $7 max "${m$6}" "\
"iterations, precision $8, and expressions 'p(z)=$9', 'dp(z)=$10' and 'd2p(z)
=$11'."
channels 0,2
f "*
begin(
const dx = abs($3 - $1);
const dy = abs($4 - $2);
const angle = $5;
const method = $6;
const itermax = $7;
const precision = $8;
zc = [ $1 + $3, $2 + $4 ]/2;
R = rot(-angle);
);
p(z) = ($9);
dp(z) = ($10);
d2p(z) = ($11);
zn = [ $1 + x*dx/(w-1), $2 + y*dy/(h-1) ];
angle?(zn = (R*(zn-=zc)+=zc));
!method?(znm1 = zn + [ precision,0 ]);
for (iter = 0, iter<itermax, ++iter,
pzn = p(zn);
method==0?(
znp1 = zn - pzn**(zn - znm1)//(pzn - p(znm1)); # secant
znm1 = zn;
):method==1?(
dpzn = dp(zn);
znp1 = zn - pzn//dpzn; # newton
):( # householder
dpzn = dp(zn);
d2pzn = d2p(zn);
hn = (pzn**d2pzn)//(2*dpzn^^2);
znp1 = zn - pzn//dpzn**([1,0] + hn);
);
norm(znp1 - zn)<precision?break();
zn = znp1;
);
cabs(zn)<2?[ zn,iter ]:[ 0,0,iter ]"
#@cli j3d : eq. to 'object3d'. : (+) #@cli j3d : eq. to 'object3d'. : (+)
#@cli object3d : [object3d],_x[%],_y[%],_z,_opacity,_rendering_mode,_is_double_s ided={ 0 | 1 },\ #@cli object3d : [object3d],_x[%],_y[%],_z,_opacity,_rendering_mode,_is_double_s ided={ 0 | 1 },\
# _is_zbuffer={ 0 | 1 },_focale,_light_x,_light_y,_light_z,_specular_lightness,_ specular_shininess : (+) # _is_zbuffer={ 0 | 1 },_focale,_light_x,_light_y,_light_z,_specular_lightness,_ specular_shininess : (+)
#@cli : Draw specified 3D object on selected images. #@cli : Draw specified 3D object on selected images.
#@cli : (eq. to 'j3d').\n #@cli : (eq. to 'j3d').\n
#@cli : 'rendering_mode' can be { 0=dots | 1=wireframe | 2=flat | 3=flat-shaded | 4=gouraud-shaded | 5=phong-shaded }. #@cli : 'rendering_mode' can be { 0=dots | 1=wireframe | 2=flat | 3=flat-shaded | 4=gouraud-shaded | 5=phong-shaded }.
#@cli : Default values: 'x=y=z=0', 'opacity=1' and 'is_zbuffer=1'. All other arg uments take their default values #@cli : Default values: 'x=y=z=0', 'opacity=1' and 'is_zbuffer=1'. All other arg uments take their default values
#@cli : from the 3D environment variables. #@cli : from the 3D environment variables.
#@cli : $ image.jpg torus3d 100,10 cone3d 30,-120 add3d[-2,-1] rotate3d. 1,1,0,6 0 object3d[0] [-1],50%,50% keep[0] #@cli : $ image.jpg torus3d 100,10 cone3d 30,-120 add3d[-2,-1] rotate3d. 1,1,0,6 0 object3d[0] [-1],50%,50% keep[0]
skipping to change at line 18908 skipping to change at line 19422
a c endl done a c endl done
#@cli stylize : [style_image],_fidelity_finest,_fidelity_coarsest,_fidelity_smoo thness_finest>=0,\ #@cli stylize : [style_image],_fidelity_finest,_fidelity_coarsest,_fidelity_smoo thness_finest>=0,\
# _fidelity_smoothnes_coarsest>=0,0<=_fidelity_chroma<=1,_init_type,_init_resolu tion>=0,init_max_gradient>=0,\ # _fidelity_smoothnes_coarsest>=0,0<=_fidelity_chroma<=1,_init_type,_init_resolu tion>=0,init_max_gradient>=0,\
# _patchsize_analysis>0,_patchsize_synthesis>0,_patchsize_synthesis_final>0,_nb_ matches_finest>=0,\ # _patchsize_analysis>0,_patchsize_synthesis>0,_patchsize_synthesis_final>0,_nb_ matches_finest>=0,\
# _nb_matches_coarsest>=0,_penalize_repetitions>=0,_matching_precision>=0,_scale _factor>1,_skip_finest_scales>=0,\ # _nb_matches_coarsest>=0,_penalize_repetitions>=0,_matching_precision>=0,_scale _factor>1,_skip_finest_scales>=0,\
# "image_matching_command" # "image_matching_command"
#@cli : Transfer colors and textures from specified style image to selected imag es, using a multi-scale \ #@cli : Transfer colors and textures from specified style image to selected imag es, using a multi-scale \
# patch-mathing algorithm. # patch-mathing algorithm.
#@cli : If instant display window[0] is opened, the steps of the image synthesis are displayed on it. #@cli : If instant display window[0] is opened, the steps of the image synthesis are displayed on it.
#@cli : 'init_type' can be { 0=best-match | 1=identity | 2=randomized}. #@cli : 'init_type' can be { 0=best-match | 1=identity | 2=randomized }.
stylize : stylize :
check ${"is_image_arg $1"}" && isnum(${2=0.25}) && isnum(${3=2}) && ${4=3}>=0 && ${5=0.5}>=0 && ${6=0.1}>=0 && "\ check ${"is_image_arg $1"}" && isnum(${2=0.25}) && isnum(${3=2}) && ${4=3}>=0 && ${5=0.5}>=0 && ${6=0.1}>=0 && "\
"$6<=1 && isint(${7=0}) && $7>=0 && $7<=3 && isint(${8=16}) && $8>=0 && ${9=0}>=0 && isint(${10=5}) && "\ "$6<=1 && isint(${7=0}) && $7>=0 && $7<=3 && isint(${8=16}) && $8>=0 && ${9=0}>=0 && isint(${10=5}) && "\
"$10>0 && isint(${11=5}) && $11>0 && isint(${12=$11}) && $12>0 && isint( ${13=2}) && isint(${14=30}) && "\ "$10>0 && isint(${11=5}) && $11>0 && isint(${12=$11}) && $12>0 && isint( ${13=2}) && isint(${14=30}) && "\
"${15=10}>=0 && ${16=2}>=0 && ${17=1.85}>1 && isint(${18=0})>=0" "${15=10}>=0 && ${16=2}>=0 && ${17=1.85}>1 && isint(${18=0})>=0"
skip "${19=s c,-3 transfer_histogram[0] [2] b[0,2] xy,0.7 n[0,2] 0,255 n[1,2] 0,200 a[0,1] c a[1,2] c}" skip "${19=s c,-3 transfer_pca[0] [2] b[0,2] xy,0.7 n[0,2] 0,255 n[1,2] 0,200 a[0,1] c a[1,2] c}"
e[^-1] "Stylize image$? with style image $1." e[^-1] "Stylize image$? with style image $1."
fidelity_finest,\ # $2 fidelity_finest,\ # $2
fidelity_coarsest,\ # $3 fidelity_coarsest,\ # $3
fidelity_smoothness_finest,\ # $4 fidelity_smoothness_finest,\ # $4
fidelity_smoothness_coarsest,\ # $5 fidelity_smoothness_coarsest,\ # $5
fidelity_chroma,\ # $6 fidelity_chroma,\ # $6
init_type,\ # $7 init_type,\ # $7
init_resolution,\ # $8 init_resolution,\ # $8
init_max_gradient,\ # $9 init_max_gradient,\ # $9
patchsize_analysis,\ # $10 patchsize_analysis,\ # $10
skipping to change at line 20614 skipping to change at line 21128
precision $2 and $3 scale(s)." precision $2 and $3 scale(s)."
pass$1 0 equalize. n. 0,255 pass$1 0 equalize. n. 0,255
repeat $!-1 repeat $!-1
+equalize[$>] n. 0,255 +displacement.. .,$2,$3,$4 rm.. +equalize[$>] n. 0,255 +displacement.. .,$2,$3,$4 rm..
warp[$>] .,1,1,1 rm. warp[$>] .,1,1,1 rm.
done rm. done rm.
#@cli register_rigid : [destination],_smoothness>=0,\ #@cli register_rigid : [destination],_smoothness>=0,\
# _boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror } # _boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }
#@cli : Register selected source images with specified destination image, using rigid warp (shift). #@cli : Register selected source images with specified destination image, using rigid warp (shift).
#@cli : Default values: 'smoothness=1' and 'boundary_conditions=0'. #@cli : Default values: 'smoothness=0.1%' and 'boundary_conditions=0'.
#@cli : $ image.jpg +shift 30,20 +register_rigid[0] [1] #@cli : $ image.jpg +shift 30,20 +register_rigid[0] [1]
register_rigid : check ${is_image_arg\ $1}" && ${2=1}>=0 && isint(${3=0}) && $3> =0 && $3<=3" register_rigid : check ${is_image_arg\ $1}" && ${2=0.1%}>=0 && isint(${3=0}) && $3>=0 && $3<=3"
e[^-1] "Register source image$? with destination image $1, using rigid warp wi th smoothness $2." e[^-1] "Register source image$? with destination image $1, using rigid warp wi th smoothness $2."
pass$1 0 equalize. b. $2 n. 0,255 pass$1 0
b. $2 equalize. 256 n. 0,1
repeat $!-1 repeat $!-1
+equalize[$>] b. $2 n. 0,255 +b[$>] $2 equalize. 256 n. 0,1
+phase_correlation. .. rm.. phase_correlation. ..
shift[$>] {^},0,$3 rm. shift[$>] {^},0,$3 rm.
done rm. done rm.
#@cli transition : [transition_shape],nb_added_frames>=0,100>=shading>=0,_single _frame_only={ -1=disabled | >=0 } #@cli transition : [transition_shape],nb_added_frames>=0,100>=shading>=0,_single _frame_only={ -1=disabled | >=0 }
#@cli : Generate a transition sequence between selected images. #@cli : Generate a transition sequence between selected images.
#@cli : Default values: 'shading=0' and 'single_frame_only=-1'. #@cli : Default values: 'shading=0' and 'single_frame_only=-1'.
#@cli : $ image.jpg +mirror c 100%,100% plasma[-1] 1,1,6 transition[0,1] [2],5 #@cli : $ image.jpg +mirror c 100%,100% plasma[-1] 1,1,6 transition[0,1] [2],5
transition : check ${is_image_arg\ $1}" && $2>=0 && ${3=0}>=0 && $3<=100" skip $ {4=-1} transition : check ${is_image_arg\ $1}" && $2>=0 && ${3=0}>=0 && $3<=100" skip $ {4=-1}
frame={round($4)} s0=" and shading $3" s1=", shading $3 and single-frame-only "$frame frame={round($4)} s0=" and shading $3" s1=", shading $3 and single-frame-only "$frame
e[^-1] "Create transition sequence between image$? with $2 added frames, trans ition shape $1"${s{$4>0}}"." e[^-1] "Create transition sequence between image$? with $2 added frames, trans ition shape $1"${s{$4>0}}"."
skipping to change at line 21476 skipping to change at line 21991
l. s +,32,35 if $!>2 k[0] fi a y endl l. s +,32,35 if $!>2 k[0] fi a y endl
autocrop. 32 if !w rm. (10) fi autocrop. 32 if !w rm. (10) fi
fi fi
#@cli covariance_colors : _avg_outvarname #@cli covariance_colors : _avg_outvarname
#@cli : Return the covariance matrix of the vector-valued colors in the latest o f the selected images #@cli : Return the covariance matrix of the vector-valued colors in the latest o f the selected images
#@cli : (for arbitrary number of channels). #@cli : (for arbitrary number of channels).
#@cli : Parameter 'avg_outvarname' is used as a variable name that takes the val ue of the average vector-value. #@cli : Parameter 'avg_outvarname' is used as a variable name that takes the val ue of the average vector-value.
covariance_colors : skip "${1=avg}" covariance_colors : skip "${1=avg}"
$1=${-average_colors} $1=${-average_colors}
f ">begin(avg = [ "$""$1" ]; const S2 = s^2; C = vectorS2(0); ); f ">begin( avg = [ "$""$1" ]; const S2 = s^2; C = vectorS2(0); );
mI = I - avg; C+=mul(mI,mI,s); end(C/=whd - 1; call('u ',vtos(C))); I" mI = I - avg; C+=mul(mI,mI,s);
end( C/=whd - 1; call('u ',vtos(C)) );
I"
#@cli dec : decimal_int1,... #@cli dec : decimal_int1,...
#@cli : Print specified decimal integers into their binary, octal, hexadecimal a nd string representations. #@cli : Print specified decimal integers into their binary, octal, hexadecimal a nd string representations.
dec : dec :
e[^-1] "Convert decimal integer"${arg\ 1+($#>1),"",s}" '${^0}' to binary '"${d ec2bin\ ${^0}}"',"\ e[^-1] "Convert decimal integer"${arg\ 1+($#>1),"",s}" '${^0}' to binary '"${d ec2bin\ ${^0}}"',"\
" octal '"${dec2oct\ ${^0}}"', hexadecimal '"${dec2hex\ ${^0}}"' and s tring '"${dec2str\ ${^0}}"'." " octal '"${dec2oct\ ${^0}}"', hexadecimal '"${dec2hex\ ${^0}}"' and s tring '"${dec2str\ ${^0}}"'."
#@cli dec2str : decimal_int1,... #@cli dec2str : decimal_int1,...
#@cli : Convert specifial decimal integers into its string representation. #@cli : Convert specifial decimal integers into its string representation.
dec2str : dec2str :
skipping to change at line 21728 skipping to change at line 22245
rm.. rm..
#@cli hex2str : hexadecimal_string #@cli hex2str : hexadecimal_string
#@cli : Convert specified hexadecimal string into a string. #@cli : Convert specified hexadecimal string into a string.
hex2str : skip ${1=""} hex2str : skip ${1=""}
if !narg("$1") u "" return fi if !narg("$1") u "" return fi
({'$*'}) if w<2 rm. u "" return fi ({'$*'}) if w<2 rm. u "" return fi
f. 'v=i-if(i>=97,87,48);if(x%2,v,v*16)' r. 2,{int(w/2)},1,1,-1 cumulate. x z. 1,1 f. 'v=i-if(i>=97,87,48);if(x%2,v,v*16)' r. 2,{int(w/2)},1,1,-1 cumulate. x z. 1,1
u {t} rm. u {t} rm.
#@cli img2base64 : _encoding={ 0=base64 | 1=base64url } #@cli img2base64 : _encoding={ 0=base64 | 1=base64url },_store_names={ 0 | 1 }
#@cli : Encode selected images as a base64-encoded string. #@cli : Encode selected images as a base64-encoded string.
#@cli : The images can be then decoded using command 'base642img'. #@cli : The images can be then decoded using command 'base642img'.
#@cli : Default values: 'encoding=0'. #@cli : Default values: 'encoding=0'.
img2base64 : skip "${1=0}" img2base64 : check "isbool(${1=0}) && isbool(${2=1})"
if isnum("$1") encoding=$1 else encoding=0 noarg fi if isnum("$1") encoding=$1 else encoding=0 noarg fi
+serialize u ${uchar2base64\ $encoding} rm. +serialize auto,1,$2 u ${uchar2base64\ $encoding} rm.
#@cli img2hex #@cli img2hex
#@cli : Return representation of last image as an hexadecimal-encoded string. #@cli : Return representation of last image as an hexadecimal-encoded string.
#@cli : Input image must have values that are integers in [0,255]. #@cli : Input image must have values that are integers in [0,255].
img2hex : img2hex :
whds={w},{h},{d},{s} y. 2,{h} whds={w},{h},{d},{s} y. 2,{h}
f.. "* f.. "*
to_char(x) = x>=0 && x<=9?48 + x:87 + x; to_char(x) = x>=0 && x<=9?48 + x:87 + x;
i(#-1,0,y) = to_char(int(i/16)); i(#-1,0,y) = to_char(int(i/16));
i(#-1,1,y) = to_char(i%16); i(#-1,1,y) = to_char(i%16);
skipping to change at line 22433 skipping to change at line 22950
if !narg({'$_path_tmp'}) if !narg({'$_path_tmp'})
if narg({'${TMP}'}) _path_tmp=${TMP} if narg({'${TMP}'}) _path_tmp=${TMP}
elif narg({'${TEMP}'}) _path_tmp=${TEMP} elif narg({'${TEMP}'}) _path_tmp=${TEMP}
elif narg({'${TMPDIR}'}) _path_tmp=${TMPDIR} elif narg({'${TMPDIR}'}) _path_tmp=${TMPDIR}
elif narg({'${HOME}'}) _path_tmp="/tmp" elif narg({'${HOME}'}) _path_tmp="/tmp"
fi fi
if ${-is_windows} _path_tmp=$_path_tmp{`92`} else _path_tmp=$_path_tmp/ fi if ${-is_windows} _path_tmp=$_path_tmp{`92`} else _path_tmp=$_path_tmp/ fi
fi fi
u $_path_tmp u $_path_tmp
#@cli remove_copymark : "image_name"
#@cli : Remove copy mark from names of selected images.
remove_copymark :
u {`"name = ['$1'];
i = find(name,'_c');
i>=0 && i<size(name) - 2 && (c=name[i+2])>=_'1' && c<=_'9'?(
ext = ['"{$>,x}"'];
size(ext)?copy(name[i],[_'.',ext,0]):(name[i]=0);
); name"`}
# render_donations: Parse the PayPal .CSV file and generate 'latest-months' dona tion gfx. # render_donations: Parse the PayPal .CSV file and generate 'latest-months' dona tion gfx.
# $1 = filename.csv # $1 = filename.csv
# $2 = number of latest months. # $2 = number of latest months.
render_donations : skip "${1="$HOME"/work/src/gmic_donations/donations.csv}",${2 =5} render_donations : skip "${1="$HOME"/work/src/gmic_donations/donations.csv}",${2 =5}
l[] l[]
i raw:"$1",uchar s -,{'\n'} rm[0] i raw:"$1",uchar s -,{'\n'} rm[0]
# Parse CSV data. # Parse CSV data.
eur2usd=1.12 # Change rate from EUR to USD eur2usd=1.12 # Change rate from EUR to USD
nb_entries=$! nb_entries=$!
skipping to change at line 23993 skipping to change at line 24520
do # Start animation loop. do # Start animation loop.
time-=1 time-=1
if $!==2\ ||\ $time<0 # Insert new rocket. if $!==2\ ||\ $time<0 # Insert new rocket.
i[0] ({u(w)},\ # X-position i[0] ({u(w)},\ # X-position
{h},\ # Y-position {h},\ # Y-position
{u(-3,3)},\ # X-velocity {u(-3,3)},\ # X-velocity
{u(2)-5},\ # Y-velocity {u(2)-5},\ # Y-velocity
{30+u(20)},\ # Time of explosion {30+u(20)},\ # Time of explosion
1.5,\ # Radius 1.5,\ # Radius
255,255,255) # Color 255,255,255) # Color
time={u(20)} # Elapsed time until next rocket. time={u(20)} # Elapsed time until next rocket.
fi fi
*. 0.99 # Create fading effect with previous frames. *. 0.99 # Create fading effect with previous frames.
j. ..,0,0,0,0,0.2 # Add background. j. ..,0,0,0,0,0.2 # Add background.
i=0 i=0
repeat $!-2 repeat $!-2
to_be_removed=0 to_be_removed=0
radius={if({$i,@4}>0,{$i,@5}/3,{$i,@5}*(1+2*({$i,@4}+2)/120))} radius={if({$i,@4}>0,{$i,@5}/3,{$i,@5}*(1+2*({$i,@4}+2)/120))}
ellipse. {$i,@0},{$i,@1},{$i,@5},{max(1,$radius)},{atan2({$i,@3},{$i,@2})* 180/pi},0.6,{$i,@6-8} # Draw rocket. ellipse. {$i,@0},{$i,@1},{$i,@5},{max(1,$radius)},{atan2({$i,@3},{$i,@2})* 180/pi},0.6,{$i,@6-8} # Draw rocket.
({$i,@2},{$i,@3},0,0.09,-1,0,0,0,0) +[$i,-1] # Compute new position of the rocket. ({$i,@2},{$i,@3},0,0.09,-1,0,0,0,0) +[$i,-1] # Compute new position of the rocket.
if {$i,@0}<0\ ||\ {$i,@0}>=w\ ||\ {$i,@1}>=h\ ||\ $radius<0 to_be_removed= 1 fi # Discard if rocket disappear. if {$i,@0}<0\ ||\ {$i,@0}>=w\ ||\ {$i,@1}>=h\ ||\ $radius<0 to_be_removed= 1 fi # Discard if rocket disappear.
skipping to change at line 29202 skipping to change at line 29729
endl done rm. endl done rm.
_dice0 : ellipse. 50%,50%,5.2%,5.2%,0,1,255 _dice0 : ellipse. 50%,50%,5.2%,5.2%,0,1,255
_dice1 : ellipse. 25%,25%,5.2%,5.2%,0,1,255 ellipse. 75%,75%,5.2%,5.2%,0,1,255 _dice1 : ellipse. 25%,25%,5.2%,5.2%,0,1,255 ellipse. 75%,75%,5.2%,5.2%,0,1,255
_dice2 : _dice1 _dice0 _dice2 : _dice1 _dice0
_dice3 : _dice1 ellipse. 25%,75%,5.2%,5.2%,0,1,255 ellipse. 75%,25%,5.2%,5.2%,0, 1,255 _dice3 : _dice1 ellipse. 25%,75%,5.2%,5.2%,0,1,255 ellipse. 75%,25%,5.2%,5.2%,0, 1,255
_dice4 : _dice3 _dice0 _dice4 : _dice3 _dice0
_dice5 : _dice3 ellipse. 25%,50%,5.2%,5.2%,0,1,255 ellipse. 75%,50%,5.2%,5.2%,0, 1,255 _dice5 : _dice3 ellipse. 25%,50%,5.2%,5.2%,0,1,255 ellipse. 75%,50%,5.2%,5.2%,0, 1,255
#@gui Drawn Montage : fx_drawn_montage, fx_drawn_montage_preview(1) #@gui Drawn Montage : fx_drawn_montage, fx_drawn_montage_preview(1) : *
#@gui : Layer = choice("1st","2nd","3rd","4th","5th","6th","7th","8th","9th","10 th","11th","12th", #@gui : Layer = choice("1st","2nd","3rd","4th","5th","6th","7th","8th","9th","10 th","11th","12th",
#@gui : "13th","14th","15th","16th") #@gui : "13th","14th","15th","16th")
#@gui : Associated Color = color(0,0,0) #@gui : Associated Color = color(0,0,0)
#@gui : Zoom = float(-10,0,10) #@gui : Zoom = float(-10,0,10)
#@gui : X-Centering (%) = float(50,0,100) #@gui : X-Centering (%) = float(50,0,100)
#@gui : Y-Centering (%) = float(50,0,100) #@gui : Y-Centering (%) = float(50,0,100)
#@gui : Angle = choice("0 deg.","90 deg.","180 deg.","270 deg.") #@gui : Angle = choice("0 deg.","90 deg.","180 deg.","270 deg.")
#@gui : Pargs = value(-1) #@gui : Pargs = value(-1)
#@gui : Args0 = value(0:0:0:0:50:50:0) #@gui : Args0 = value(0:0:0:0:50:50:0)
#@gui : Args1 = value(0:0:0:0:50:50:0) #@gui : Args1 = value(0:0:0:0:50:50:0)
skipping to change at line 29545 skipping to change at line 30072
endl done endl done
c 0,255 c 0,255
fx_ministeck_preview : fx_ministeck_preview :
repeat $! l[$>] repeat $! l[$>]
w={w} h={h} w={w} h={h}
fx_ministeck $* fx_ministeck $*
r $w,$h,1,100%,0,0,0.5,0.5 r $w,$h,1,100%,0,0,0.5,0.5
endl done endl done
#@gui Montage : fx_montage, fx_montage_preview(1) #@gui Montage : fx_montage, fx_montage_preview(1) : *
#@gui : Montage Type = choice("Auto","Custom Layout","Horizontal","Vertical","Ho rizontal Array","Vertical Array") #@gui : Montage Type = choice("Auto","Custom Layout","Horizontal","Vertical","Ho rizontal Array","Vertical Array")
#@gui : Custom Layout = text{"V(H(0,1),H(2,V(3,4)))"} #@gui : Custom Layout = text{"V(H(0,1),H(2,V(3,4)))"}
#@gui : Merging Mode = choice(1,"Aligned","Scaled") #@gui : Merging Mode = choice(1,"Aligned","Scaled")
#@gui : Centering / Scale = float(0.5,0,1) #@gui : Centering / Scale = float(0.5,0,1)
#@gui : Padding (px) = int(0,0,128) #@gui : Padding (px) = int(0,0,128)
#@gui : sep = separator() #@gui : sep = separator()
#@gui : Frame (px) = int(0,0,128) #@gui : Frame (px) = int(0,0,128)
#@gui : Frame Color = color(0,0,0,255) #@gui : Frame Color = color(0,0,0,255)
#@gui : sep = separator() #@gui : sep = separator()
#@gui : Angle = float(0,0,360) #@gui : Angle = float(0,0,360)
skipping to change at line 30954 skipping to change at line 31481
#@gui : "200%","250%","300%") #@gui : "200%","250%","300%")
#@gui : Style Variations = choice("None","All XY-flips","All 90&deg; rotations", "All 45&deg; rotations") #@gui : Style Variations = choice("None","All XY-flips","All 90&deg; rotations", "All 45&deg; rotations")
#@gui : Preview Progression While Running = bool(1) #@gui : Preview Progression While Running = bool(1)
#@gui : sep = separator(), note = note{"<small><b><span color="blue">Style/Targe t Parameters:</span></b></small>"} #@gui : sep = separator(), note = note{"<small><b><span color="blue">Style/Targe t Parameters:</span></b></small>"}
#@gui : Fidelity to Target (Finest) = float(0.5,0,5) #@gui : Fidelity to Target (Finest) = float(0.5,0,5)
#@gui : Fidelity to Target (Coarsest) = float(2,0,5) #@gui : Fidelity to Target (Coarsest) = float(2,0,5)
#@gui : Fidelity Smoothness (Finest) = float(3,0,5) #@gui : Fidelity Smoothness (Finest) = float(3,0,5)
#@gui : Fidelity Smoothness (Coarsest) = float(0.5,0,5) #@gui : Fidelity Smoothness (Coarsest) = float(0.5,0,5)
#@gui : Fidelity Chromaticity = float(0.1,0,1) #@gui : Fidelity Chromaticity = float(0.1,0,1)
#@gui : sep = separator(), note = note{"<small><b><span color="blue">Image Match ing Parameters:</span></b></small>"} #@gui : sep = separator(), note = note{"<small><b><span color="blue">Image Match ing Parameters:</span></b></small>"}
#@gui : Match Colors With = choice(2,"Nothing","Gamma Balance","Histogram Transf #@gui : Match Colors With = choice(3,"Nothing","Gamma Balance","Histogram Transf
er") er","PCA transfer")
#@gui : Colorspace = choice{5,"sRGB","Linear RGB","YCbCr","YCbCr (Luma Only)","Y #@gui : Colorspace = choice{3,"sRGB","Linear RGB","YCbCr","YCbCr (Luma/Chroma),"
CbCr (Chroma Only)","Lab", YCbCr (Luma Only)",
#@gui : "Lab (Luma Only)","Lab (Chroma Only)"} #@gui : "YCbCr (Chroma Only)","Lab","Lab (Luma/Chroma)","Lab (Luma Only)","Lab (
Chroma Only)"}
#@gui : Keep Color Channels = choice{"All","Luminance Only (YCbCr)","Luminance O nly (Lab)","Chrominances Only (CbCr)",\ #@gui : Keep Color Channels = choice{"All","Luminance Only (YCbCr)","Luminance O nly (Lab)","Chrominances Only (CbCr)",\
#@gui : "Chrominances Only (ab)"} #@gui : "Chrominances Only (ab)"}
#@gui : Smoothness = float(0.7,0,5) #@gui : Smoothness = float(0.7,0,5)
#@gui : Also Match Gradients = float(1,0,5) #@gui : Also Match Gradients = float(1,0,5)
#@gui : sep = separator(), note = note{"<small><b><span color="blue">Advanced Pa rameters:</span></b></small>"} #@gui : sep = separator(), note = note{"<small><b><span color="blue">Advanced Pa rameters:</span></b></small>"}
#@gui : Init. Type = choice("Best Match","Identity","Randomized") #@gui : Init. Type = choice("Best Match","Identity","Randomized")
#@gui : Init. Resolution = choice(1,"8px","16px","32px","64px","128px","256px") #@gui : Init. Resolution = choice(1,"8px","16px","32px","64px","128px","256px")
#@gui : Init. With High Gradients Only = float(0,0,100) #@gui : Init. With High Gradients Only = float(0,0,100)
#@gui : Patch Size for Analysis = int(5,2,16) #@gui : Patch Size for Analysis = int(5,2,16)
#@gui : Patch Size for Synthesis = int(5,2,16) #@gui : Patch Size for Synthesis = int(5,2,16)
skipping to change at line 30981 skipping to change at line 31508
#@gui : Matching Precision (Smaller is Faster) = float(2,0,10) #@gui : Matching Precision (Smaller is Faster) = float(2,0,10)
#@gui : Scale Factor = float(1.85,1.1,4) #@gui : Scale Factor = float(1.85,1.1,4)
#@gui : Skip Finest Scales = int(0,0,3) #@gui : Skip Finest Scales = int(0,0,3)
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp; #@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;
#@gui : Latest Update: <i>2019/01/10</i>.</small>") #@gui : Latest Update: <i>2019/01/10</i>.</small>")
fx_stylize : l[] if !narg($$stylize) _fx_stylize_ fi onfail endl fx_stylize : l[] if !narg($$stylize) _fx_stylize_ fi onfail endl
init_resolution={arg(1+$16,8,16,32,64,128,256)} init_resolution={arg(1+$16,8,16,32,64,128,256)}
# Define image matching function # Define image matching function
colorspace=${"arg 1+$11,all,lrgb,ycbcr,ycbcr_y,ycbcr_cbcr,lab,lab_l,lab_ab"} colorspace=${"arg 1+$11,all,lrgb,ycbcr,ycbcr,ycbcr_y,ycbcr_cbcr,lab,lab,lab_l, lab_ab"}
match_colors="s c,-3 mv[1] 3 b[-2,-1] 1% negate[-2,-1] n[-2,-1] 0,1" match_colors="s c,-3 mv[1] 3 b[-2,-1] 1% negate[-2,-1] n[-2,-1] 0,1"
if $10==1 match_colors=$match_colors" ac[0,1] \"balance_gamma ,\","$colorspace luma,chroma=
elif $10==2 match_colors=$match_colors" transfer_histogram[0] [1],256,"$colors if $11==3" || "$11==7 # Chroma/Luma conversion for YCbCr or Lab
pace luma=_${"arg 1+($11==7),y,l"}
chroma=_${"arg 1+($11==7),cbcr,ab"}
fi
if $10==1
match_colors=$match_colors" ac[0,1] \"balance_gamma ,\","$colorspace$luma
if narg($chroma) match_colors=$match_colors" ac[0,1] \"balance_gamma ,\","$c
olorspace$chroma fi
elif $10==2
match_colors=$match_colors" transfer_histogram[0] [1],256,"$colorspace$luma
if narg($chroma) match_colors=$match_colors" transfer_histogram[0] [1],256,"
$colorspace$chroma fi
elif $10==3
match_colors=$match_colors" transfer_pca[0] [1],"$colorspace$luma" c[0] 0,25
5"
if narg($chroma) match_colors=$match_colors" transfer_pca[0] [1],"$colorspac
e$chroma" c[0] 0,255" fi
fi fi
if $12==1 match_colors=$match_colors" rgb2ycbcr[0,1] sh[0,1] 1,2 f[-2,-1] 128 rm[-2,-1] ycbcr2rgb[0,1]" if $12==1 match_colors=$match_colors" rgb2ycbcr[0,1] sh[0,1] 1,2 f[-2,-1] 128 rm[-2,-1] ycbcr2rgb[0,1]"
elif $12==2 match_colors=$match_colors" srgb2lab[0,1] sh[0,1] 1,2 f[-2,-1] 0 r m[-2,-1] lab2srgb[0,1]" elif $12==2 match_colors=$match_colors" srgb2lab[0,1] sh[0,1] 1,2 f[-2,-1] 0 r m[-2,-1] lab2srgb[0,1]"
elif $12==3 match_colors=$match_colors" rgb2ycbcr[0,1] sh[0,1] 0 f[-2,-1] 128 rm[-2,-1] ycbcr2rgb[0,1]" elif $12==3 match_colors=$match_colors" rgb2ycbcr[0,1] sh[0,1] 0 f[-2,-1] 128 rm[-2,-1] ycbcr2rgb[0,1]"
elif $12==4 match_colors=$match_colors" srgb2lab[0,1] sh[0,1] 0 f[-2,-1] 50 rm [-2,-1] lab2srgb[0,1]" elif $12==4 match_colors=$match_colors" srgb2lab[0,1] sh[0,1] 0 f[-2,-1] 50 rm [-2,-1] lab2srgb[0,1]"
fi fi
match_colors=$match_colors\ match_colors=$match_colors\
" b[0,1] xy,$13 repeat 2 l[$>] s c n 0,255 a c endl done *[-2,-1] {$14*255} a[0,-2] c a[1,-1] c" " b[0,1] xy,$13 repeat 2 l[$>] s c n 0,255 a c endl done *[-2,-1] {$14*255} a[0,-2] c a[1,-1] c"
patch_penalization=$23 patch_penalization=$23
skipping to change at line 32275 skipping to change at line 32814
#@gui : note = note{"<small><b>Note:</b> #@gui : note = note{"<small><b>Note:</b>
#@gui : This filter simulates different types of colorblindness vision. #@gui : This filter simulates different types of colorblindness vision.
#@gui : </small>"} #@gui : </small>"}
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp; #@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;
#@gui : Latest Update: <i>2016/20/04</i>.</small>") #@gui : Latest Update: <i>2016/20/04</i>.</small>")
fx_colorblind_preview : fx_colorblind_preview :
gui_split_preview "colorblind $*",${-3--1} gui_split_preview "colorblind $*",${-3--1}
#@gui Color Presets : fx_color_presets, fx_color_presets_preview(1)+ #@gui Color Presets : fx_color_presets, fx_color_presets_preview(1)+
#@gui : Category = choice{2,"Abigail Gonzalez (21)","Alex Jordan (81)","Creative #@gui : LUTs Pack = choice{14,"Abigail Gonzalez (21)","Alex Jordan (81)","Cinema
Pack (33)","Eric Ellerbrock (14)", tic (8)","Cinematic Travel (29)",
#@gui : "FilterGrade Cinematic (8)","J.T. Semple (14)","Lutify.Me (7)","Moviz (4 #@gui : "Creative Pack (33)","Eric Ellerbrock (14)","FilterGrade Cinematic (8)",
8)","Ohad Peretz (7)", "J.T. Semple (14)",
#@gui : "ON1 Photography (90)","PictureFX (19)","PIXLS.US (31)","RocketStock (35 #@gui : "Kyler Holland (10)","Lutify.Me (7)","Moviz (48)","Ohad Peretz (7)","ON1
)","Shamoon Abbasi (25)", Photography (90)","PictureFX (19)",
#@gui : "SmallHD Movie Look (7)","Others (69)"} #@gui : "PIXLS.US (31)","Purple11 (12)","RocketStock (35)","Shamoon Abbasi (25)"
,"SmallHD Movie Look (7)","Others (69)"}
##### Abigail Gonzales ##### Abigail Gonzales
#@gui : Preset = choice{1,"All [Collage]","None", #@gui : Preset = choice{1,"All [Collage]","None",
#@gui : "Blade Runner","Blue House","Blue Ice","Caribe","Cinema","Cinema 2","Cin ema 3","Cinema 4","Cinema 5", #@gui : "Blade Runner","Blue House","Blue Ice","Caribe","Cinema","Cinema 2","Cin ema 3","Cinema 4","Cinema 5",
#@gui : "Cinema Noir","Cinematic for Flog","Day4Nite","Eterna for Flog","Filmic" ,"Fuji HDR", #@gui : "Cinema Noir","Cinematic for Flog","Day4Nite","Eterna for Flog","Filmic" ,"Fuji HDR",
#@gui : "Golden Gate","Matrix","Monochrome 1","Monochrome 2","Old West","Science Fiction"}_0 #@gui : "Golden Gate","Matrix","Monochrome 1","Monochrome 2","Old West","Science Fiction"}_0
##### Alex Jordan ##### Alex Jordan
#@gui : Preset = choice{1,"All [Collage]","None", #@gui : Preset = choice{1,"All [Collage]","None",
#@gui : "Action Magenta 01","Action Red 01","Adventure 1453","Aggressive Highlig hts Recovery 5", #@gui : "Action Magenta 01","Action Red 01","Adventure 1453","Aggressive Highlig hts Recovery 5",
skipping to change at line 32304 skipping to change at line 32843
#@gui : "Faded Retro 01","Faded Retro 02","Film 0987","Film 9879","Film Highligh t Contrast","Flat 30", #@gui : "Faded Retro 01","Faded Retro 02","Film 0987","Film 9879","Film Highligh t Contrast","Flat 30",
#@gui : "Green 2025","Green Action","Green Afternoon","Green Conflict","Green Da y 01","Green Day 02", #@gui : "Green 2025","Green Action","Green Afternoon","Green Conflict","Green Da y 01","Green Day 02",
#@gui : "Green G09","Green Indoor","Green Light","Harsh Day","Harsh Sunset","Hig hlights Protection", #@gui : "Green G09","Green Indoor","Green Light","Harsh Day","Harsh Sunset","Hig hlights Protection",
#@gui : "Indoor Blue","Low Contrast Blue","Low Key 01","Magenta Day","Magenta Da y 01","Magenta Dream", #@gui : "Indoor Blue","Low Contrast Blue","Low Key 01","Magenta Day","Magenta Da y 01","Magenta Dream",
#@gui : "Memories","Moonlight 01","Mostly Blue","Muted 01","Night 01","Only Red" ,"Only Red and Blue", #@gui : "Memories","Moonlight 01","Mostly Blue","Muted 01","Night 01","Only Red" ,"Only Red and Blue",
#@gui : "Operation Yellow","Orange Dark 4","Orange Dark 7","Orange Dark Look","O range Underexposed", #@gui : "Operation Yellow","Orange Dark 4","Orange Dark 7","Orange Dark Look","O range Underexposed",
#@gui : "Protect Highlights 01","Red Afternoon 01","Red Day 01","Red Dream 01"," Retro Brown 01", #@gui : "Protect Highlights 01","Red Afternoon 01","Red Day 01","Red Dream 01"," Retro Brown 01",
#@gui : "Retro Magenta 01","Retro Yellow 01","Saturated Blue","Smart Contrast"," Subtle Blue", #@gui : "Retro Magenta 01","Retro Yellow 01","Saturated Blue","Smart Contrast"," Subtle Blue",
#@gui : "Subtle Green","Yellow 55B","Yellow Film 01"}_0 #@gui : "Subtle Green","Yellow 55B","Yellow Film 01"}_0
##### Cinematic
#@gui : Preset = choice{1,"All [Collage]","None",
#@gui : "Deep","Dimension","Enchanted","Flavin","Frosted","Shine","Ultra Water",
Wipe"}_0
##### Cinematic Travel
#@gui : Preset = choice{1,"All [Collage]","None",
#@gui : "Blue Cold Fade","Bright Teal Orange","Bright Warm","Clear Teal Fade","C
old Clear Blue","Cold Clear Blue 1",
#@gui : "Deep Blue","Deep Dark Warm","Deep High Contrast","Deep Teal Fade","Deep
Warm Fade","Faded Green",
#@gui : "Greenish Contrasty","Greenish Fade","Greenish Fade 1","Hard Teal Orange
","Neutral Teal Orange",
#@gui : "Neutral Warm Fade","Smooth Clear","Smooth Green Orange","Smooth Teal Or
ange","Teal Fade","Very Warm Greenish",
#@gui : "Warm Dark Contrasty","Warm Fade","Warm Fade 1","Warm Neutral","Warm Sun
set Red","Warm Teal"}_0
##### Creative Pack ##### Creative Pack
#@gui : Preset = choice{1,"All [Collage]","None", #@gui : Preset = choice{1,"All [Collage]","None",
#@gui : "Anime","Bleach Bypass 1","Bleach Bypass 2","Bleach Bypass 3","Bleach By pass 4","Candle Light", #@gui : "Anime","Bleach Bypass 1","Bleach Bypass 2","Bleach Bypass 3","Bleach By pass 4","Candle Light",
#@gui : "Color Negative","Crisp Warm","Crip Winter","Drop Blues","Edgy Ember","F all Colors","Foggy Night", #@gui : "Color Negative","Crisp Warm","Crip Winter","Drop Blues","Edgy Ember","F all Colors","Foggy Night",
#@gui : "Futuristic Bleak 1","Futuristic Bleak 2","Futuristic Bleak 3","Futurist ic Bleak 4","Horror Blue", #@gui : "Futuristic Bleak 1","Futuristic Bleak 2","Futuristic Bleak 3","Futurist ic Bleak 4","Horror Blue",
#@gui : "Late Sunset","Moonlight","Night From Day","Red Blue Yellow","Smokey","S oft Warming","Teal Magenta Gold", #@gui : "Late Sunset","Moonlight","Night From Day","Red Blue Yellow","Smokey","S oft Warming","Teal Magenta Gold",
#@gui : "Teal Orange","Teal Orange 1","Teal Orange 2","Teal Orange 3","Tension G reen 1","Tension Green 2", #@gui : "Teal Orange","Teal Orange 1","Teal Orange 2","Teal Orange 3","Tension G reen 1","Tension Green 2",
#@gui : "Tension Green 3","Tension Green 4"}_2 #@gui : "Tension Green 3","Tension Green 4"}_0
##### Eric Ellerbrock ##### Eric Ellerbrock
#@gui : Preset = choice{1,"All [Collage]","None", #@gui : Preset = choice{1,"All [Collage]","None",
#@gui : "Avalanche","Black Star","Helios","Hydracore","Hypnosis","Killstreak","N emesis","Night Blade 4", #@gui : "Avalanche","Black Star","Helios","Hydracore","Hypnosis","Killstreak","N emesis","Night Blade 4",
#@gui : "Paladin","Seringe 4","Serpent","Terra 4","Victory","Yellowstone"}_0 #@gui : "Paladin","Seringe 4","Serpent","Terra 4","Victory","Yellowstone"}_0
##### FilterGrade Cinematic ##### FilterGrade Cinematic
#@gui : Preset = choice{1,"All [Collage]","None", #@gui : Preset = choice{1,"All [Collage]","None",
#@gui : "Cine Basic", "Cine Bright", "Cine Cold", "Cine Drama", "Cine Teal Orang e 1", "Cine Teal Orange 2", #@gui : "Cine Basic", "Cine Bright", "Cine Cold", "Cine Drama", "Cine Teal Orang e 1", "Cine Teal Orange 2",
#@gui : "Cine Vibrant", "Cine Warm"}_0 #@gui : "Cine Vibrant", "Cine Warm"}_0
##### J.T. Semple ##### J.T. Semple
#@gui : Preset = choice{1,"All [Collage]","None", #@gui : Preset = choice{1,"All [Collage]","None",
#@gui : "Bright Green","Crisp Romance","Crushin","Frosted Beach Picnic","Just Pe achy","Late Afternoon Wanderlust", #@gui : "Bright Green","Crisp Romance","Crushin","Frosted Beach Picnic","Just Pe achy","Late Afternoon Wanderlust",
#@gui : "Lush Green Summer","Magenta Coffee","Minimalist Caffeination","Mystic P urple Sunset","Nostalgia Honey", #@gui : "Lush Green Summer","Magenta Coffee","Minimalist Caffeination","Mystic P urple Sunset","Nostalgia Honey",
#@gui : "Spring Morning","Toasted Garden","Winter Lighthouse"}_0 #@gui : "Spring Morning","Toasted Garden","Winter Lighthouse"}_0
##### Kyler Holland
#@gui : Preset = choice{1,"All [Collage]","None",
#@gui : "KH 1","KH 2","KH 3","KH 4","KH 5","KH 6","KH 7","KH 8","KH 9","KH 10"}_
0
##### Lutify.Me ##### Lutify.Me
#@gui : Preset = choice{1,"All [Collage]","None", #@gui : Preset = choice{1,"All [Collage]","None",
#@gui : "Hackmanite","Herderite","Heulandite","Hiddenite","Hilutite","Howlite"," Hypersthene"}_0 #@gui : "Hackmanite","Herderite","Heulandite","Hiddenite","Hilutite","Howlite"," Hypersthene"}_0
##### Moviz ##### Moviz
#@gui : Preset = choice{1,"All [Collage]","None", #@gui : Preset = choice{1,"All [Collage]","None",
#@gui : "Moviz 1","Moviz 2","Moviz 3","Moviz 4","Moviz 5","Moviz 6","Moviz 7","M oviz 8","Moviz 9","Moviz 10", #@gui : "Moviz 1","Moviz 2","Moviz 3","Moviz 4","Moviz 5","Moviz 6","Moviz 7","M oviz 8","Moviz 9","Moviz 10",
#@gui : "Moviz 11","Moviz 12","Moviz 13","Moviz 14","Moviz 15","Moviz 16","Moviz 17","Moviz 18","Moviz 19","Moviz 20", #@gui : "Moviz 11","Moviz 12","Moviz 13","Moviz 14","Moviz 15","Moviz 16","Moviz 17","Moviz 18","Moviz 19","Moviz 20",
#@gui : "Moviz 21","Moviz 22","Moviz 23","Moviz 24","Moviz 25","Moviz 26","Moviz 27","Moviz 28","Moviz 29","Moviz 30", #@gui : "Moviz 21","Moviz 22","Moviz 23","Moviz 24","Moviz 25","Moviz 26","Moviz 27","Moviz 28","Moviz 29","Moviz 30",
#@gui : "Moviz 31","Moviz 32","Moviz 33","Moviz 34","Moviz 35","Moviz 36","Moviz 37","Moviz 38","Moviz 39","Moviz 40", #@gui : "Moviz 31","Moviz 32","Moviz 33","Moviz 34","Moviz 35","Moviz 36","Moviz 37","Moviz 38","Moviz 39","Moviz 40",
skipping to change at line 32380 skipping to change at line 32935
#@gui : "GoldFX - Spring Breeze","GoldFX - Summer Heat", #@gui : "GoldFX - Spring Breeze","GoldFX - Summer Heat",
#@gui : "TechnicalFX - Backlight Filter","ZilverFX - B&amp;W Solarization","Zilv erFX - InfraRed", #@gui : "TechnicalFX - Backlight Filter","ZilverFX - B&amp;W Solarization","Zilv erFX - InfraRed",
#@gui : "ZilverFX - Vintage B&amp;W"}_0 #@gui : "ZilverFX - Vintage B&amp;W"}_0
##### PIXLS.US ##### PIXLS.US
#@gui : Preset = choice{1,"All [Collage]","None", #@gui : Preset = choice{1,"All [Collage]","None",
#@gui : "Amstragram","Amstragram+","Autumn","Cinematic Lady Bird","Cinematic Mex ico","Dark Blues in Sunlight", #@gui : "Amstragram","Amstragram+","Autumn","Cinematic Lady Bird","Cinematic Mex ico","Dark Blues in Sunlight",
#@gui : "Delicatessen","Expired 69","Faded Look","Faded Print","Hypressen","Mage nta Yellow","Metropolis", #@gui : "Delicatessen","Expired 69","Faded Look","Faded Print","Hypressen","Mage nta Yellow","Metropolis",
#@gui : "Modern Film","Newspaper","Night Spy","Progressen","Prussian Blue","Seve nties Magazine","Street", #@gui : "Modern Film","Newspaper","Night Spy","Progressen","Prussian Blue","Seve nties Magazine","Street",
#@gui : "Sweet Bubblegum","Sweet Gelatto","Taiga","Tarraco","Unknown","Uzbek Buk hara","Uzbek Marriage", #@gui : "Sweet Bubblegum","Sweet Gelatto","Taiga","Tarraco","Unknown","Uzbek Buk hara","Uzbek Marriage",
#@gui : "Uzbek Samarcande","Velvetia","Warm Vintage","Whiter Whites"}_0 #@gui : "Uzbek Samarcande","Velvetia","Warm Vintage","Whiter Whites"}_2
##### Purple11
#@gui : Preset = choice{1,"All [Collage]","None",
#@gui : "Going for a Walk","Good Morning","Nah","Once Upon a Time","Passing By",
"Serenity",
#@gui : "Smooth Sailing","Undeniable","Undeniable 2","Urban Cowboy","We'll See",
"You Can Do It"}_0
##### RocketStock ##### RocketStock
#@gui : Preset = choice{1,"All [Collage]","None", #@gui : Preset = choice{1,"All [Collage]","None",
#@gui : "Arabica 12", "Ava 614","Azrael 93","Bourbon 64","Byers 11","Chemical 16 8","Clayton 33","Clouseau 54", #@gui : "Arabica 12", "Ava 614","Azrael 93","Bourbon 64","Byers 11","Chemical 16 8","Clayton 33","Clouseau 54",
#@gui : "Cobi 3","Contrail 35","Cubicle 99","Django 25","Domingo 145","Faded 47" ,"Folger 50","Fusion 88", #@gui : "Cobi 3","Contrail 35","Cubicle 99","Django 25","Domingo 145","Faded 47" ,"Folger 50","Fusion 88",
#@gui : "Hyla 68","Korben 214","Lenox 340","Lucky 64","McKinnon 75","Milo 5","Ne on 770","Paladin 1875","Pasadena 21", #@gui : "Hyla 68","Korben 214","Lenox 340","Lucky 64","McKinnon 75","Milo 5","Ne on 770","Paladin 1875","Pasadena 21",
#@gui : "Pitaya 15","Reeve 38","Remy 24","Sprocket 231","Teigen 28","Trent 18"," Tweed 71","Vireo 37","Zed 32", #@gui : "Pitaya 15","Reeve 38","Remy 24","Sprocket 231","Teigen 28","Trent 18"," Tweed 71","Vireo 37","Zed 32",
#@gui : "Zeke 39"}_0 #@gui : "Zeke 39"}_0
##### Shamoon Abbasi ##### Shamoon Abbasi
skipping to change at line 32409 skipping to change at line 32969
#@gui : "Apocalypse This Very Moment","B-Boyz 2","Bob Ford","Life Giving Tree"," Moonrise","Saving Private Damon", #@gui : "Apocalypse This Very Moment","B-Boyz 2","Bob Ford","Life Giving Tree"," Moonrise","Saving Private Damon",
#@gui : "The Matrices"}_0 #@gui : "The Matrices"}_0
##### Others ##### Others
#@gui : Preset = choice{1,"All [Collage]","None", #@gui : Preset = choice{1,"All [Collage]","None",
#@gui : "60's","60's (faded)","60's (faded alt)","Alien green","Black &amp; Whit e","Bleach bypass","Blue mono", #@gui : "60's","60's (faded)","60's (faded alt)","Alien green","Black &amp; Whit e","Bleach bypass","Blue mono",
#@gui : "Cinematic-01","Cinematic-02","Cinematic-03", #@gui : "Cinematic-01","Cinematic-02","Cinematic-03",
#@gui : "Color (rich)","Faded","Faded (alt)","Faded (analog)","Faded (extreme)", "Faded (vivid)","Expired (fade)", #@gui : "Color (rich)","Faded","Faded (alt)","Faded (analog)","Faded (extreme)", "Faded (vivid)","Expired (fade)",
#@gui : "Expired (polaroid)","Extreme","Fade","Faux infrared","Golden","Golden ( bright)","Golden (fade)", #@gui : "Expired (polaroid)","Extreme","Fade","Faux infrared","Golden","Golden ( bright)","Golden (fade)",
#@gui : "Golden (mono)","Golden (vibrant)","Green mono","Hong Kong","Instant-C", "K-Tone Vintage Kodachrome", #@gui : "Golden (mono)","Golden (vibrant)","Green mono","Hong Kong","Instant-C", "K-Tone Vintage Kodachrome",
#@gui : "Light (blown)","Lomo","Mono tinted", #@gui : "Light (blown)","Lomo","Mono tinted","Muted fade",
#@gui : "Mute shift","Natural (vivid)","Nostalgic","Orange tone","Pink fade","Pu rple","Retro","Rotate (muted)", #@gui : "Mute shift","Natural (vivid)","Nostalgic","Orange tone","Pink fade","Pu rple","Retro","Rotate (muted)",
#@gui : "Rotate (vibrant)","Rotated","Rotated (crush)","Smooth crome-ish","Smoot h fade","Soft fade","Solarize color", #@gui : "Rotate (vibrant)","Rotated","Rotated (crush)","Smooth crome-ish","Smoot h fade","Soft fade","Solarize color",
#@gui : "Solarized color2","Summer","Summer (alt)","Sunny","Sunny (alt)","Sunny (warm)","Sunny (rich)","Super warm", #@gui : "Solarized color2","Summer","Summer (alt)","Sunny","Sunny (alt)","Sunny (warm)","Sunny (rich)","Super warm",
#@gui : "Super warm (rich)","Sutro FX","Vibrant","Vibrant (alien)","Vibrant (con trast)","Vibrant (crome-ish)", #@gui : "Super warm (rich)","Sutro FX","Vibrant","Vibrant (alien)","Vibrant (con trast)","Vibrant (crome-ish)",
#@gui : "Vintage","Vintage (alt)","Vintage (brighter)","Warm","Warm (highlight)" ,"Warm (yellow)"}_0 #@gui : "Vintage","Vintage (alt)","Vintage (brighter)","Warm","Warm (highlight)" ,"Warm (yellow)"}_0
#@gui : Thumbnail Size = int(512,0,1024)_1 #@gui : Thumbnail Size = int(512,0,1024)_1
#@gui : sep = separator() #@gui : sep = separator()
#@gui : Strength (%) = float(100,0,100) #@gui : Strength (%) = float(100,0,100)
#@gui : Brightness (%) = float(0,-100,100) #@gui : Brightness (%) = float(0,-100,100)
skipping to change at line 32483 skipping to change at line 33043
# 4umiInE/hb85apfe+727eW5wMBMALJYZSjAnW8ya7SH+XiSn+XngKpebJO1O4r2CgNlEgGWFhhJJi8 nkWQJqEQ3vc0ZIiXV64hQdx0uaqgPAxInWTMZK\ # 4umiInE/hb85apfe+727eW5wMBMALJYZSjAnW8ya7SH+XiSn+XngKpebJO1O4r2CgNlEgGWFhhJJi8 nkWQJqEQ3vc0ZIiXV64hQdx0uaqgPAxInWTMZK\
# 4mJzS/NZbB+xWPguTeCMQCQkxBgbG48zHANzCSuJa9ZYkjikbf5ZyYIt0D47gWINC4PeTAuwd+bYzi OYW3LI5hHJiRwEYgsC4VpNWY6CggFIrF4xhzhv\ # 4mJzS/NZbB+xWPguTeCMQCQkxBgbG48zHANzCSuJa9ZYkjikbf5ZyYIt0D47gWINC4PeTAuwd+bYzi OYW3LI5hHJiRwEYgsC4VpNWY6CggFIrF4xhzhv\
# 1WIOmWy5yZVjsYDEdmW78nHVXC5340YIrF7BWDBvCXRhQ32qd3osAvqbxNnOfBxfz9HR0QaA+bYM0o JFi+YQLCy98096p1NiN8UnxnNicdW1tZ+aDwFg\ # 1WIOmWy5yZVjsYDEdmW78nHVXC5340YIrF7BWDBvCXRhQ32qd3osAvqbxNnOfBxfz9HR0QaA+bYM0o JFi+YQLCy98096p1NiN8UnxnNicdW1tZ+aDwFg\
# e/d+xKIlEbYEEqIjv6E+D+fs7Jp2hF2Do3xuPlhQAJg72OuWLl1HtCVa1Hg/qEwVCeLjhXSVpKYOFx XFG+gDz3Jaty29t4TBILJ9qb77M0QeAgFNHRxc\ # e/d+xKIlEbYEEqIjv6E+D+fs7Jp2hF2Do3xuPlhQAJg72OuWLl1HtCVa1Hg/qEwVCeLjhXSVpKYOFx XFG+gDz3Jaty29t4TBILJ9qb77M0QeAgFNHRxc\
# l5z6srGxbwAcPdv2JuJICmMVOZsaIM/PvixMSxsMRquTPYS1Hxu/nAWtnW0vqlr4CXmBtJISekC3RC QS9SiUNJ8WYW7u0QM80OmdleEbKJUGyvuHRuSB\ # l5z6srGxbwAcPdv2JuJICmMVOZsaIM/PvixMSxsMRquTPYS1Hxu/nAWtnW0vqlr4CXmBtJISekC3RC QS9SiUNJ8WYW7u0QM80OmdleEbKJUGyvuHRuSB\
# eLG/f++AQlE6iu++MZTb2wHEed1U/K1bN/tzTn37WUyT3i4u/j2sVKvKy+hB5ddunAGBFy5QAwKaL1 3JOX+l+HZQRdnoaBm9RKGoGBkevtmVKwM+Pnh8\ # eLG/f++AQlE6iu++MZTb2wHEed1U/K1bN/tzTn37WUyT3i4u/j2sVKvKy+hB5ddunAGBFy5QAwKaL1 3JOX+l+HZQRdnoaBm9RKGoGBkevtmVKwM+Pnh8\
# aUB+V2lhX++voSANGh2iQSuVwWjqycymBj8V+JHooZS2l44Eo4PKystDNJqQkBB0j192VkZWtm+7Ag 0GW+okSppcTqfTg1TqCnSFWqVSlwxKzp3z8xP1\ # aUB+V2lhX++voSANGh2iQSuVwWjqycymBj8V+JHooZS2l44Eo4PKystDNJqQkBB0j192VkZWtm+7Ag 0GW+okSppcTqfTg1TqCnSFWqVSlwxKzp3z8xP1\
# aDR/AFuiV5UIiV63AAAAAElFTkSuQmCC"/>&nbsp;&nbsp;\ # aDR/AFuiV5UIiV63AAAAAElFTkSuQmCC"/>&nbsp;&nbsp;\
# <a href="https://freshluts.com/users/1">Alex Jordan - FreshLUTs</a></center>"} # <a href="https://freshluts.com/users/1">Alex Jordan - FreshLUTs</a></center>"}
#@gui : sep = value(0)_2+ #@gui : sep = value(0)_0+
#@gui : note = note{"<center><a href="http://fixthephoto.com/free-cinematic-luts
">Free Cinematic LUTs</a></center>"}
#@gui : sep = value(0)_0+
#@gui : note = note{"<center><img src="data:image/png;base64,iVBORw0KGgoAAAANSUh
EUgAAADkAAAAgCAMAAACfHyDkAAAC9FBMVEUUI\
# TIXITMfITUcITQfIzYhITYZIDNBMHbKPi/HKE3HLkPGKn9BL3PIMj/JODXJOjLHJ1TKRC3HJXxrOIf
IJnZFLm/HKFzHK0fKPDDHJ23HJ2XINDzJNTnKQ\
# S7FLoJpPXYmJUgiJEEeIjrJNzcrJDTKSS7KQy1xOot1QIdiNIRWMH1KMHlFL3UuJlAmIjbNXTWKR5G
FRpB8QY52PYtmNYbFMoRdMoHHJ357QHpPL3pdO\
# HZQMHUpJ08cIz7MXDzNYTdKJjbKQC7ENYbHLYBfNH1TMHpaNHlVNHZKMHJGLnJCLGrHKGrHKGHFT1Y
rIju+NzfNVDXKRDUzKTVaLDLLTDCRSZKBRJCCR\
# InGVYZuPYR+QYJyP37IJXrIJ3NQMnE8LW2FR2nIT2bHKklCI0MqJkHOWDfIO4FnOYBYMH9qPHyXSXp
jOnnBJ3Z2QXJbM3FML2WUTGMzKl7BKFktKlg0K\
# Fg2KFJkJVJALU/KSU68KE7IM0szKkouJUeLJUXIQELMUDsZIzmuVDifUDiXLzh+QzeNSTZLMTaZSZJ
8Q4vJToe+NIbKSIOyMX7BKX2kTHqsLnrLSXdvP\
# nZUM3BvNm9gOGyNSWtWNGtLLWuFMGc4LGeUK2evKWdyNWS7UGBXM2A/Kl/JPV5IMVt3JFmqVVSjMUy
9WEbLVkO3LkJsJEE1JEDJPz08Ijk1IzZjOTU+L\
# TWGMTPMUTLJQDB/NjCgOS+/QC6kSI+HRYqZR4e4QIe1UoasT4G8MYB1PHqGOnfFUnWSOnWaMHTILnD
JO2/KRm22KWynS2qlLWqeS2hnMmfIL2ClJ16EM\
# VlOL1m4VlO3LFKvJlLJQE2zWExfN0vMVUq/LUZ6JkTEXUDLST2uND2VTjnDXji4VzhvQDZaNzVpODS
1QC6sPYefP4KfP4FzNni2Jne6UnOkR3GqNHBqM\
# XCuT2WIJGBlKlyxUlmMQFjHK1aIJVWdS1StTU+RM05VJE5zP0WCJEJYI0BTIzzFWTSmNzHHTC7FQC5
jTTRlAAAEvUlEQVQ4y6XTdVRTcRTAcd7e3htjU\
# 8E5kBkLN2ADBgiyMWCEdJdSSiMCEkqISimK3d1SAlIidnd3d3d3/uP9bXAQD/qHfv/hnnv4vPvgbBq
UzqN2EtGh/5A4jncCCaEwKKjx1s2JN4PUyu/8t\
# WsNQSpS+3HCpFIpSKiDCWosvXV74qQJ4687ODiYmY1vRHD0inMwTwInPRlz2czsa8MvkqAGlTYgceM
GGLPEgPUhISEi0ffbCMoXOqwXie4AXCWvMBOJR\
# BtAoqSlEyeMVyqViYmJASBEOn36GBgY6KjaQFBHb5ZXBahG6YLQGGWIjs7GYLXkn69SFhVdCQwMbG7
uqYlycuoDIb8xmDouIiJTKYLRkTi5ObIiUcfAo\
# EVIaJAkbur1du26fv26orqhekKaKPAtwoTI0LRzAU5OzU3C0aERMZdDnJx+BFMoIE3Z7HeFvaDevXv
3gwcg73/Vv5UHU1dZRGYqAzU17zj6RYbOrQiAZ\
# YsQSYGXJ/tVoVYXFPDqyvcnVsx/+mBPoOr6N+E4IyNuVRGMTUSZRWTMWtj7w0mQdibGnosq9bRUnWA
yaTQTYxvr/lsK0Xn/YGLRlORM+GO6+tcnwDNOF\
# cG2RKiWTGMbj6On4/Sgi0fVUsIa/KwQvX0JnAxPO3UF5iYiY0pyzIV1MDpS2qSra9SKMXQ6PS6ucrW
pHY+/WmyY4tsF8nfE041SMy/AeLUuPzmc+zIPx\
# hIKDmmQfJDDXaOWjNKmQ5+kJPzPxJaH8rSgEjzfMGmu71kYL1EyLFMX+o7V0qp2xNUSH2lsM9zaPX2
ZrjY0pgYncS9xhO/YOHh5R8G8cMWRvLF6etX1C\
# awk7so82BZIWyUpiAYpdks/7OOjq6s76jPOk1gd8qVDBdIcVmrayrMw1lAyWAo4SaePgZOtkuR5Sqz
FVm7zl3M4Pj4+Z+KXSnbGrkH3v1DmJSmOxL7W1\
# j5Tn+/iwl2JtgVEq8Qgno21mMVym39Q39vbm3M83eVx7DE4X4DnWLmlxa6BF6khFlspUtD2dB3eJlH
ZErGVIUuxa8TQofr6+k9m7T7A4XBG1QlsXdxnH\
# fDmcI778cRu3Ef74aUuEaQ6tRSstrZiGYan7hnRAxo6Z84+fX3vN5QcF3f57v0w5uKLrd1T0HZ5PNk
mIUQXg7Q04u7tjhoyBPzBeL6tq2L7dHjScsJUY\
# ssNGwZjOd4u1ZTvBrK/0dzZMplMrZ9TsofbysMGdh8yIlfgJYlKmcqA0Y/sKKF8F5CDp8hnMFTJHvr
Z29q6b5vOkMmW+cHJnWHDGLKZ5STWllqiclggL\
# UJ37RgIMRjlWLarhxx+nTHzA+lpEzVrKiwP12KdSCzDEKS5+f0BfaHZtXy2R9T26TAuo5raeCjChvX
tOzOX7FQKFln2tzAfNHmr84ABO3LhQ8metw3GG\
# fH2Xh5s7lQY9xJYJxLiJyE5aNNWZ+clhL2JJ9sjYprzjBdUUxM22/3etGmz47GOsr2E8MHmcHTT3SV
UjZEmbPRVZWdjxUxPJg1GLx72R4mNS0avu2UVV\
# cM+mkmDou0wDR5NNS7lY3+UkKBswYKyBNgWL6XRmNEj7WHHZ6LRrhj7q2zPPivLDhyKl5XFK4afv8l
/7iccu3t+6IPmuwAAAABJRU5ErkJggg=="/>&n\
# bsp;&nbsp;<a href="https://911templates.com/30travel_presets">30 Cinematic Tra
vel Color</a></center>"}
#@gui : sep = value(0)_0+
#@gui : note = note{"<center><img src="data:image/png;base64,iVBORw0KGgoAAAANSUh EUgAAACIAAAAgCAMAAABAUVr7AAAC91BMVEUh\ #@gui : note = note{"<center><img src="data:image/png;base64,iVBORw0KGgoAAAANSUh EUgAAACIAAAAgCAMAAABAUVr7AAAC91BMVEUh\
# ISH9DA39+QAhJCkpKSElJSElJDMxMCJFQCE4NyEIXKcmPyIqNSH80gUTJrp8HLEmJ04fOEgzJ0EiLD UhMi8hIib8ahT1phACygX5xwQFsdYbJKUjLj8gN\ # ISH9DA39+QAhJCkpKSElJSElJDMxMCJFQCE4NyEIXKcmPyIqNSH80gUTJrp8HLEmJ04fOEgzJ0EiLD UhMi8hIib8ahT1phACygX5xwQFsdYbJKUjLj8gN\
# TlfIiw2KyJfWB5oWx38gBhCSdiIG7tyGqsUH6TzEJnsEY49J00dRUr8Nzr31DA+JTAu5i8hKC78xyE zRh/3tBj3rBcArwYFvwRr0gEq1vEBgtEBo8wDcL\ # TlfIiw2KyJfWB5oWx38gBhCSdiIG7tyGqsUH6TzEJnsEY49J00dRUr8Nzr31DA+JTAu5i8hKC78xyE zRh/3tBj3rBcArwYFvwRr0gEq1vEBgtEBo8wDcL\
# 4TJKxsGqPnEoPlGn/kE3cZVF9HK0ovJjYsLS4xIitTJicqIiYhSiL5mCE+PiFgOSFIRSBWUB/6vB78 jBuEcBkHtQj5ywOT3gAAxOAAu9sueMsCZ7UUIbA\ # 4TJKxsGqPnEoPlGn/kE3cZVF9HK0ovJjYsLS4xIitTJicqIiYhSiL5mCE+PiFgOSFIRSBWUB/6vB78 jBuEcBkHtQj5ywOT3gAAxOAAu9sueMsCZ7UUIbA\
# EU50yN5cdO1dWJUFKJTexKS4nMCr68icvKiNBLSJIMSEiWSBRSSBgSx/76R1lZRyUjhf8dBZg0wj37 QMBuAKk4gF81wEBqcyLPskCecj4Q6buOZnWO5Ic\ # EU50yN5cdO1dWJUFKJTexKS4nMCr68icvKiNBLSJIMSEiWSBRSSBgSx/76R1lZRyUjhf8dBZg0wj37 QMBuAKk4gF81wEBqcyLPskCecj4Q6buOZnWO5Ic\
# SXghJXOdJmhoKVptIUgbVz5SJT79jTd59C1HJSv9/Cjg2ya9aSZTMyK/uCEffyAfah5PWh6UGx40Uh 00YhuDfRl0dRj6Uhf83QZazgTt9QGD2wAAzOadS\ # SXghJXOdJmhoKVptIUgbVz5SJT79jTd59C1HJSv9/Cjg2ya9aSZTMyK/uCEffyAfah5PWh6UGx40Uh 00YhuDfRl0dRj6Uhf83QZazgTt9QGD2wAAzOadS\
# OKURNcCrdABw80ksMYtbbgTVLZVHa0bmKtwH6u0FqkLv6CkFpVnM5QZWZPPEocdK4YtNIMacYFjH3B PJ2ruLmkcNWFEJF01JVdTKlUfL1RaJ00HpkH1DT\ # OKURNcCrdABw80ksMYtbbgTVLZVHa0bmKtwH6u0FqkLv6CkFpVnM5QZWZPPEocdK4YtNIMacYFjH3B PJ2ruLmkcNWFEJF01JVdTKlUfL1RaJ00HpkH1DT\
# 47JzzyijrlfjUfPzL16S7gzSv8fivetijNpSRz7COARSKBJCKXeSGgKCGskyBFkiD3CyBtOB8+VB39 +RfU0RbGwxZMbBYMkxFxjQz82gjx1Af43gRGyQE\ # 47JzzyijrlfjUfPzL16S7gzSv8fivetijNpSRz7COARSKBJCKXeSGgKCGskyBFkiD3CyBtOB8+VB39 +RfU0RbGwxZMbBYMkxFxjQz82gjx1Af43gRGyQE\
# sseIXvN1dStM3aNCGNMYCkMQkbr4DhrhwHrh+PLfBPrNQKbAApq85IK4mZ6MJkp0OaYXxEHgpxHITZ moBtmgZTmD0TzyeFzQ62y1p3Cpm1ypixidXuiXS\ # sseIXvN1dStM3aNCGNMYCkMQkbr4DhrhwHrh+PLfBPrNQKbAApq85IK4mZ6MJkp0OaYXxEHgpxHITZ moBtmgZTmD0TzyeFzQ62y1p3Cpm1ypixidXuiXS\
# 4yObYSOSUCLLhx5LVx6R7B37nhx9XxyNWBs+dhpA0RlYfRn8MxEUnw3l8gaOywaizgW15gMlxgLHnP o6AAAA/XRSTlP9/f39/f39/f39/f39/f39/f39/\ # 4yObYSOSUCLLhx5LVx6R7B37nhx9XxyNWBs+dhpA0RlYfRn8MxEUnw3l8gaOywaizgW15gMlxgLHnP o6AAAA/XRSTlP9/f39/f39/f39/f39/f39/f39/\
skipping to change at line 32577 skipping to change at line 33167
# X3c0HzxQt667d8rpidNBvcVjdKjH8AXKnhfP9Z6lFK+YP2jzmrU79jzq1DNsyEptCpBFscXeqt6zvG /3ueozCufNeb5+zbu1H570Sc4JioqSMUB9hHjA\ # X3c0HzxQt667d8rpidNBvcVjdKjH8AXKnhfP9Z6lFK+YP2jzmrU79jzq1DNsyEptCpBFscXeqt6zvG /3ueozCufNeb5+zbu1H570Sc4JioqSMUB9hHjA\
# ALHmjs+i1ywSAWDQtvUbRsx7UUXimRYZ7ikCubmSwADvpUsXZn+KAVCxW5dtGFF3AKGI6PdicaAvSB Nn5ATcUmoirFYUIAio3Hpt3rKDCEoSeGAmP00J\ # ALHmjs+i1ywSAWDQtvUbRsx7UUXimRYZ7ikCubmSwADvpUsXZn+KAVCxW5dtGFF3AKGI6PdicaAvSB Nn5ATcUmoirFYUIAio3Hpt3rKDCEoSeGAmP00J\
# lvfr7z04m8W2NsbABQixj7d/1bA4gJKUiDWQr/QF7C1hkrBoOYfD8fwLMHD4ogSgCJT4rOMv8Qf1si iWNQanxzBEMAHPhsRFHqJq4AqEYOmW83VAVsmo\ # lvfr7z04m8W2NsbABQixj7d/1bA4gJKUiDWQr/QF7C1hkrBoOYfD8fwLMHD4ogSgCJT4rOMv8Qf1si iWNQanxzBEMAHPhsRFHqJq4AqEYOmW83VAVsmo\
# lFVyoEg4v3u/vLqsjEVQNhQCA9MkvoAhp3PkcjlHzkABqO77cr8nhX1DCZJCyDBNWh4fMBg1jBqc7k kXwQrf+w5rwHFPGYB9EHS7vy87E9TQ6QwnOr0t\ # lFVyoEg4v3u/vLqsjEVQNhQCA9MkvoAhp3PkcjlHzkABqO77cr8nhX1DCZJCyDBNWh4fMBg1jBqc7k kXwQrf+w5rwHFPGYB9EHS7vy87E9TQ6QwnOr0t\
# RsC/TX0bmnCRaNcPkiQpKjpAZ8kBXC7mBAG6ApZANm3+0ozvHjZ5G4qiFFUi8S+RAC6mwLgYxuU6VV Tj5a0AKd85qFcriiJoDDvI31IAuG0xblsoLLL4\ # RsC/TX0bmnCRaNcPkiQpKjpAZ8kBXC7mBAG6ApZANm3+0ozvHjZ5G4qiFFUi8S+RAC6mwLgYxuU6VV Tj5a0AKd85qFcriiJoDDvI31IAuG0xblsoLLL4\
# 4/biONGujQ35r/KrAYJGF+QFsEsAxlVgmEKByUflR0b/Yo0qjgUVKyqK8wEqiiqQFFmBAlM4/VVjZJ m1rMIWBw9JbImM4wGEwtnDC/b9AdM3HYNA1prq\ # 4/biONGujQ35r/KrAYJGF+QFsEsAxlVgmEKByUflR0b/Yo0qjgUVKyqK8wEqiiqQFFmBAlM4/VVjZJ m1rMIWBw9JbImM4wGEwtnDC/b9AdM3HYNA1prq\
# AAAAAElFTkSuQmCC"/>&nbsp;&nbsp;\ # AAAAAElFTkSuQmCC"/>&nbsp;&nbsp;\
# <a href="https://freshluts.com/users/120">J.T. Semple - FreshLUTs</a></center> "} # <a href="https://freshluts.com/users/120">J.T. Semple - FreshLUTs</a></center> "}
#@gui : sep = value(0)_0+ #@gui : sep = value(0)_0+
#@gui : note = note{"<center><img src="data:image/png;base64,iVBORw0KGgoAAAANSUh
EUgAAACYAAAAmCAMAAACf4xmcAAACMVBMVEULF\
# iILFyEOGSMJFSEOGyQOGCELGCITHykLGCELFh8JFh8NFyEQHSYSHicUISoNFyINGSULGCQWICoJFiM
hKzQbJS8mMToKFSIdKDEZIy0RHSchLTgZJi8XI\
# iwTGyQQGiMpMzsbKDQYJTAKFiQ4Qkg0PkYlLzgeKjQNFh8yPUQfLDcXIy0RHisQHCkWGyRUXmojLzk
jLTYTIC0PGyceHyTr7/jK2eyhssZIVWFDTlo3Q\
# 047RksvOkIuOEEtNz8pNj8nMz4eKTMaJzITGSEQFyHe6PTV4O7D1+vE1+a+0OTH1uPCzt6VsNGdrL2
PlKNhfJxqd4ZocX4+SVQ6RlA3QUgtOkclMTwXJ\
# C8aHybl6PLT4fLQ3uzM2erR1+O5zOOvxNysvtSEps2jtcqNqsiAocecp7hohaR+jaJyfolSaodLYn6
DdX1kcHtnZ3RZZG9JWG1LWWVPWWM3TGMyP01GR\
# EgqN0QxNEAjMT8aKTdFNzEdJSkzKicXHyHk7fbG3vbN3PTW4PHM3PDn5Oq2z+rC0Oa0yd2sxN2ivdy
6yNrLy9avvs6otsmTrMmmrsCUpsB7lbd5krOMn\
# q/VuJmFj5lsgJlYdJSDhZF7fo2ciIxvfIuMg4Z8cYCDbndeanZCWnNiYW85UW9OVWlhYmRrWWSJdmN
iWmFQU15LT1xXT1oxRFo8SldQR0snN0oyPUdTT\
# UQ4OkRoT0EeLD5IRD0uLTcyNTVWPzIfIzA7MC4sKCsgJCokISPHXUUCAAAD5klEQVQ4y0WSBXfbMBR
GnxRbppniLJx0gSZpk6w0bFfumJmZmZmZmZmZG\
# X7dnqLBPZKPYl19T1IM4PMB/YcBGd0gHhCZ2kTTDJtWJfv22/2LW/ylLDQZdM02dCA45ppKq/r2+3B
pN6CFGiI80Bo/lgjouFBHTZZR+7qzH/g4clITo\
# gzu+vVvMkBsaggNi+7s15dreqawR0Nsm9KQ83B1vUcAqA18b6h1f+/uAUDNy+g+7gNCb9/ZohKqyVg
ZV2Jc949kD86GdJ/nAeLjXX3x+JvnUkNiPkIMo\
# jJmzNBs1CCkY9hfqp5+Lm1udChzfCoxDAMrJ2XUMA47j0LfrTt5Y/Xa0acm9LYzoPlIIdlTmFFlaKi
hI7ale+6Evf0PzZx7YM7ARjmEe9YL5pdPM6pk1\
# IDHAYe4U8cO7d9/7sxhC5bvcDyZkUKg77snj3r+pglCGTZw3ohZJ4YOX3lllQNJanfv+vl6yx7ZIMA
lnsbJeAMPzh95es6YB+fukRDB7WuFAj9GCAjhj\
# sBlAxcdPTJq+PFVs1+Cx0+laTpCdNR0DiAE1KULRgwYNm/MyoubPJfoREMIERpHJSri0rGjhw2Ydez
C1UWbXFtV+aWhhirIMpUrMMYcZ/mooQNGLj4/f\
# ulElzJbNiqgDZQjNOpIN2f3HzF/4Zjx97cx8VZggEp4OLUqRZ3ma6OHn1mycPzaXY6NcQSNCkAQzey
t65X/iz0/O2DxsiXLroeT+IufUcA1zNMqd+yBv\
# e3WuP2H9417z+wMIEQgNB0712wA69m4USPHTpzM+Ecl5jjAs4iKI57mQeOGDVOb8oO220zHGd6Epqo
MG2PYwXUdZcKgmLN1Ui3gxH8IUCoJKB9Rc/Kgd\
# NO6urxDKWNiNQ+CaNQ0eeuFmKaU2Di1nB60rrHp71Jhg1+gKKap4ENpHRxT2qelTL6Mi8KFSCSSSCT
4g8t+q94pK1asCQsoJvcEEO6NhMPhThxEEv743\
# eaS1T74bVkRYGpFCwgaGgKBMHrxNZPjVmzFYMvycwktoQVzuYaGXC4XzDVwr7NuRcKyJq75k/UnjEI
w2CdY6blAJy9/eVLAsgbXFYUnwvAIfThtbX2Cs\
# Xw43jsS2DgpGPHXNVuWhZY4BJMY1LS1ttZks63B2q54vFicvjnvN3s1x5rEBVmYho1CS3ZKtjpb01b
fmS4Wi+lXZWASje7Y7jBGJSVuYWGJMWhpaclWV\
# 9e019em0tPT6S5L6RVV0ltLrhS1FKzMs7Bodkp19ZAhQ9qnxWK1qVRXKh+bXnKcUpcLUI5iZUlCD/c
2pQa9jo5pHR31tSjmU/l4vAwcH7gsKjHqMvob3\
# PCdJnRHhgoAAAAASUVORK5CYII="/>&nbsp;&nbsp;\
# <a href="https://sellfy.com/p/SGnG/">Kyler Holland 10 Free CLUTs</a></center>"
}
#@gui : sep = value(0)_0+
#@gui : note = note{"<center><img src="data:image/png;base64,iVBORw0KGgoAAAANSUh EUgAAAIMAAAAWCAMAAADU6N+kAAAANlBMVEUA\ #@gui : note = note{"<center><img src="data:image/png;base64,iVBORw0KGgoAAAANSUh EUgAAAIMAAAAWCAMAAADU6N+kAAAANlBMVEUA\
# AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAABH0wLDAA AAEHRSTlMAv0Dfn4CP78+vIDBgcFAQ4LAwBQAAA\ # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAABH0wLDAA AAEHRSTlMAv0Dfn4CP78+vIDBgcFAQ4LAwBQAAA\
# opJREFUSMeVlVmy4yAMRcFMNuA47H+z/TQgMSSp6vsRhAT4IAQxoBMUill1gdCd/Z+sTagI4iG5ett QztrbmOpAV1+h4oQX2uUF6pFy3BEUqHs00r0yoD\ # opJREFUSMeVlVmy4yAMRcFMNuA47H+z/TQgMSSp6vsRhAT4IAQxoBMUill1gdCd/Z+sTagI4iG5ett QztrbmOpAV1+h4oQX2uUF6pFy3BEUqHs00r0yoD\
# dZe7ZduE5cImdlwzIh9RIwPQ5tMEuww5wMI2Nr7/ebJz4ehLg3+BvrLSJvzdGtARQaiRgsdml7nlcL l6xIMUy0oy4xVCIvnQ1iu1qLSQFE3cMML/mQA4T\ # dZe7ZduE5cImdlwzIh9RIwPQ5tMEuww5wMI2Nr7/ebJz4ehLg3+BvrLSJvzdGtARQaiRgsdml7nlcL l6xIMUy0oy4xVCIvnQ1iu1qLSQFE3cMML/mQA4T\
# OOc9DhtJGhkDkHnfx/qrmZgBJ0cjgpO8uwcN2ZYgTg2Xcxzzt/xl6mzilOprsnYHOwvWoJXaO9CU4q ke+M0h6+0rEcCrDNHhZr+ih8b3ovdLZ8FfyuDNQ\ # OOc9DhtJGhkDkHnfx/qrmZgBJ0cjgpO8uwcN2ZYgTg2Xcxzzt/xl6mzilOprsnYHOwvWoJXaO9CU4q ke+M0h6+0rEcCrDNHhZr+ih8b3ovdLZ8FfyuDNQ\
# cS+1Wem6qWcMTugJhnphyGNxlFsPUKzrOIRBvfZPMwNeq2v0zQxq00siS3mj8K1V+cYJvr522MlQJ3 bGhOYFQUplcDNDkaUqMejCPM572Ttcm8+VNZ69f\ # cS+1Wem6qWcMTugJhnphyGNxlFsPUKzrOIRBvfZPMwNeq2v0zQxq00siS3mj8K1V+cYJvr522MlQJ3 bGhOYFQUplcDNDkaUqMejCPM572Ttcm8+VNZ69f\
# /CC7Qz7TGII+oGFQXaVWrd+MWg9AoKW+n59NwYrRxFAyiC5K2PBXP2AvjPU/Cc+1P3jc+HMDKplZpA S8UYZoFXhxRAL5KJ+c2p7w0qVGVTKoJmV1OSRQR\ # /CC7Qz7TGII+oGFQXaVWrd+MWg9AoKW+n59NwYrRxFAyiC5K2PBXP2AvjPU/Cc+1P3jc+HMDKplZpA S8UYZoFXhxRAL5KJ+c2p7w0qVGVTKoJmV1OSRQR\
# PF0t5cTiLuqpeQV4b9CXEvKJE+Whnu8fk/ve764sCSF3sLw6RfDJ32MMLgJgbbD+iG9ET5o2BLGW6z FPtvhv0dC/pkEIMXhu5EyZejWJK9kaF9ZIirUw+\ # PF0t5cTiLuqpeQV4b9CXEvKJE+Whnu8fk/ve764sCSF3sLw6RfDJ32MMLgJgbbD+iG9ET5o2BLGW6z FPtvhv0dC/pkEIMXhu5EyZejWJK9kaF9ZIirUw+\
# Sn60yMlTsKEOcGVJWhkZQwtAWBmXMnbjLcou1gEqtCcNDNjA0bJmB3UGsi1vDyrymnas1HTydwzGAs k/UrX164Dh2Lurkg1rGrGDj81QaqdrWM8mYHpSL\ # Sn60yMlTsKEOcGVJWhkZQwtAWBmXMnbjLcou1gEqtCcNDNjA0bJmB3UGsi1vDyrymnas1HTydwzGAs k/UrX164Dh2Lurkg1rGrGDj81QaqdrWM8mYHpSL\
# ayobMwVfAVSz+arDgwrt5wDlbgjnCaqAY0EvUwLo+bAaK/fYPzbBi89MLkUDAAAAAElFTkSuQmCC"/ >&nbsp;&nbsp;<a href="https://lutify.me\ # ayobMwVfAVSz+arDgwrt5wDlbgjnCaqAY0EvUwLo+bAaK/fYPzbBi89MLkUDAAAAAElFTkSuQmCC"/ >&nbsp;&nbsp;<a href="https://lutify.me\
skipping to change at line 32619 skipping to change at line 33232
# yW/P0E79AZz+yFoozMzG1N69hgxJ0ifTlXXKV+l/7yMFqYTLoZCHAg/Uf26Ej0oqDr9Rzj9E5JJDsC rtIK7AHQsk4LiPBXjgrXJ+thkLCNBLaTgsEGZOI\ # yW/P0E79AZz+yFoozMzG1N69hgxJ0ifTlXXKV+l/7yMFqYTLoZCHAg/Uf26Ej0oqDr9Rzj9E5JJDsC rtIK7AHQsk4LiPBXjgrXJ+thkLCNBLaTgsEGZOI\
# HxvHJLMfsFG1DVPYU+YvnfLUFRUNBCKLZJLBBrKUVNVVZVp/CP6Qt77ssF8ZthgMGCL3CFrSCL87MV fE8bfFOmvSeIabxYXD2fSoPiNIhBYeN8Ek5oquU\ # HxvHJLMfsFG1DVPYU+YvnfLUFRUNBCKLZJLBBrKUVNVVZVp/CP6Qt77ssF8ZthgMGCL3CFrSCL87MV fE8bfFOmvSeIabxYXD2fSoPiNIhBYeN8Ek5oquU\
# kJM5klxSUudOxTm7mAuBQmPRCLRKKF51dKBjwDsJ/lakwB7uwnnICrf2EBRs2N22oa/ruDLckkDuGH jM/AiSs7N/tBGN/SOYYNfvkMeXW8PwZsOapMbBN\ # kJM5klxSUudOxTm7mAuBQmPRCLRKKF51dKBjwDsJ/lakwB7uwnnICrf2EBRs2N22oa/ruDLckkDuGH jM/AiSs7N/tBGN/SOYYNfvkMeXW8PwZsOapMbBN\
# QvBaTybIIcuv7e5dZE+KUWrI/5kVZ3vbesjkOKHMmJsBVbZm3s825o5Za+GCuMZm4XbEhgrLi6PluG alm8Dn8sa8MDp9hGQmOAfOt/HzsXUcrPxmnLR9G\ # QvBaTybIIcuv7e5dZE+KUWrI/5kVZ3vbesjkOKHMmJsBVbZm3s825o5Za+GCuMZm4XbEhgrLi6PluG alm8Dn8sa8MDp9hGQmOAfOt/HzsXUcrPxmnLR9G\
# Xe19/KDVAui0SC9PD69IGj3AWv0HukgIS3/cZL8AAAAASUVORK5CYII="/>&nbsp;&nbsp;<a href ="https://www.on1.com/free/lut-packs/">\ # Xe19/KDVAui0SC9PD69IGj3AWv0HukgIS3/cZL8AAAAASUVORK5CYII="/>&nbsp;&nbsp;<a href ="https://www.on1.com/free/lut-packs/">\
# ON1 Free Photography LUTs</a></center>"} # ON1 Free Photography LUTs</a></center>"}
#@gui : sep = value(0)_0+ #@gui : sep = value(0)_0+
#@gui : note = note{"<center><a href="http://www.digicrea.be/picturefx">PictureF X - A Free HaldCLUT Set</a></center>"} #@gui : note = note{"<center><a href="http://www.digicrea.be/picturefx">PictureF X - A Free HaldCLUT Set</a></center>"}
#@gui : sep = value(0)_0+ #@gui : sep = value(0)_2+
#@gui : note = note{"<center><img src="data:image/png;base64,iVBORw0KGgoAAAANSUh EUgAAAEAAAABACAMAAACdt4HsAAAA5FBMVEX///\ #@gui : note = note{"<center><img src="data:image/png;base64,iVBORw0KGgoAAAANSUh EUgAAAEAAAABACAMAAACdt4HsAAAA5FBMVEX///\
# 8AAABJSUnMzMzKysr39/fW1tb9/f3u7u7w8PD6+vrn5+d9fX2VlZXy8vKSkpKHh4e3t7eMjIz8/Pz7 +/t2dnZra2tQUFD5+fn09PTq6urj4+PU1NSpqam\ # 8AAABJSUnMzMzKysr39/fW1tb9/f3u7u7w8PD6+vrn5+d9fX2VlZXy8vKSkpKHh4e3t7eMjIz8/Pz7 +/t2dnZra2tQUFD5+fn09PTq6urj4+PU1NSpqam\
# amprt7e3c3NzY2NjR0dHDw8O/v7+vr6+ioqKDg4NFRUXOzs7GxsY1NTUqKioGBga5ubmmpqaenp56e nphYWFcXFxNTU09PT3g4ODe3t61tbWxsbGrq6uP\ # amprt7e3c3NzY2NjR0dHDw8O/v7+vr6+ioqKDg4NFRUXOzs7GxsY1NTUqKioGBga5ubmmpqaenp56e nphYWFcXFxNTU09PT3g4ODe3t61tbWxsbGrq6uP\
# j49vb29lZWVXV1dCQkIKCgrAwMC8vLx+fn5zc3M5OTloaGgyMjIjIyMZGRkTExMeHh4Ueor/AAADBE lEQVRYw+2X53LaQBSF74IaoghVQIjei023Daa4x\ # j49vb29lZWVXV1dCQkIKCgrAwMC8vLx+fn5zc3M5OTloaGgyMjIjIyMZGRkTExMeHh4Ueor/AAADBE lEQVRYw+2X53LaQBSF74IaoghVQIjei023Daa4x\
# 3be/31yV7vYBKyMCPlhe3JmgHMumk+rvbArATlRQM4iJ+gMARE4QZHvCxDFowFlwZcHkLtN9wl5NGo 5YJIEpqyfVJ6kPUCS+LLF+Svh6tUYIMFzzE8pnh\ # 3be/31yV7vYBKyMCPlhe3JmgHMumk+rvbArATlRQM4iJ+gMARE4QZHvCxDFowFlwZcHkLtN9wl5NGo 5YJIEpqyfVJ6kPUCS+LLF+Svh6tUYIMFzzE8pnh\
# IfAzJjsqNr6zgA19mylZhxghwaUNV1jY2hlsIoX7b8VEcv6ANqNTax2QIN97pw2IUoP4xLp/FHyvfn aMfsG9lA76APAJjwJv+8V8wv0Bpv3EgMAgHwruw\ # IfAzJjsqNr6zgA19mylZhxghwaUNV1jY2hlsIoX7b8VEcv6ANqNTax2QIN97pw2IUoP4xLp/FHyvfn aMfsG9lA76APAJjwJv+8V8wv0Bpv3EgMAgHwruw\
# U84R5WeOwCh1WHMIA+EWUmDdxTl4rUJrhJEsQEuDSQpUH8Z6QjbvEShfCAkxaON+m2IqQn1hoQGgAT HcBoET8NsERgKffARmCujwGQHYBWYdQTZXwgBwt\ # U84R5WeOwCh1WHMIA+EWUmDdxTl4rUJrhJEsQEuDSQpUH8Z6QjbvEShfCAkxaON+m2IqQn1hoQGgAT HcBoET8NsERgKffARmCujwGQHYBWYdQTZXwgBwt\
# dHgwDQwP+FrlQgMkWnB5KKC3rSG+t6ywgCLmNvd19JsYWDZ+JuVwAPcGc4F5j6DKtJm0M/NQAHX0/k PM99DeMdtHWwsGdLZJNGhcsAau0Wp84F30L14gg\ # dHgwDQwP+FrlQgMkWnB5KKC3rSG+t6ywgCLmNvd19JsYWDZ+JuVwAPcGc4F5j6DKtJm0M/NQAHX0/k PM99DeMdtHWwsGdLZJNGhcsAau0Wp84F30L14gg\
# BiSiD5V95u+ov528UT9kK8HixmGXqERBEBNRmtulOAl7SYAsKulAscDRmSrx7oFfwEA5VZzHGc0qKr AVYkysYLKUycIEFr/Af8eoBuGQwGGYdxBKAVvrs\ # BiSiD5V95u+ov528UT9kK8HixmGXqERBEBNRmtulOAl7SYAsKulAscDRmSrx7oFfwEA5VZzHGc0qKr AVYkysYLKUycIEFr/Af8eoBuGQwGGYdxBKAVvrs\
# UvClDib1I+w13atwOIirxXieUOABpZtycSOESDq+eN67afhVq/TXcCudHPZPJoPJrj7Z5Xstu9orkH UIkIlZkMBL2QMOV0FyAdBZQ0ToGQiQPP0SZcN0B\ # UvClDib1I+w13atwOIirxXieUOABpZtycSOESDq+eN67afhVq/TXcCudHPZPJoPJrj7Z5Xstu9orkH UIkIlZkMBL2QMOV0FyAdBZQ0ToGQiQPP0SZcN0B\
# NFz8ApIjpA6Co1zV5CxBGMlgVcQdwj/BS/gDQrbWawABiZpqDLSC3fqgrADuAzkuyasEB4K5WBg7IT sb8jD5O0Ppzaq45AFx9lYl/cAmwBQwbV0MOUEuK\ # NFz8ApIjpA6Co1zV5CxBGMlgVcQdwj/BS/gDQrbWawABiZpqDLSC3fqgrADuAzkuyasEB4K5WBg7IT sb8jD5O0Ppzaq45AFx9lYl/cAmwBQwbV0MOUEuK\
# ApD31/RGne5sBTWugjxI/gFQtS050WGAfGLQknF2YqYoe7YJcsuLRQQAXdsDNNhG3iRziD7aimJvKl 7ETiYfElkn0RwXoIyDGDrJJR5W6RWTs8s9wIXkV\ # ApD31/RGne5sBTWugjxI/gFQtS050WGAfGLQknF2YqYoe7YJcsuLRQQAXdsDNNhG3iRziD7aimJvKl 7ETiYfElkn0RwXoIyDGDrJJR5W6RWTs8s9wIXkV\
# 8rSBbiSJIqSpCgSCnO2KlwA5CQLx1P1J78kdGJf67/w6QEnP3yfqF/1kj/apHwTgAAAAABJRU5ErkJ ggg=="/>&nbsp;&nbsp;\ # 8rSBbiSJIqSpCgSCnO2KlwA5CQLx1P1J78kdGJf67/w6QEnP3yfqF/1kj/apHwTgAAAAABJRU5ErkJ ggg=="/>&nbsp;&nbsp;\
# <a href="https://discuss.pixls.us/t/help-to-create-a-set-of-pixls-us-color-lut s">PIXLS.US Contributors</a></center>"} # <a href="https://discuss.pixls.us/t/help-to-create-a-set-of-pixls-us-color-lut s">PIXLS.US Contributors</a></center>"}
#@gui : sep = value(0)_0+ #@gui : sep = value(0)_0+
#@gui : note = note{"<center><img src="data:image/png;base64,iVBORw0KGgoAAAANSUh
EUgAAACAAAAAgCAMAAABEpIrGAAAAZlBMVEX18v\
# ny7PauecS0g8jt5PPr4fHz7vju5/Tm2e7IptjXv+Pw6fXo2++wfMXMrdrj1OusdsPq3/C3icu6jc2y
f8fdyOfUueDEn9Xl1u3ezOjaxeXStt/BmdK8ks/\
# h0OrPst2mbL6lar0clnGlAAABY0lEQVQ4y5WT2ZqDIAyFhbIp++JWt5n3f8kBtVorc1Eu+ID8JCcJF
F8NwimlnPxn5oJZO9d1xzDImIGwXRmgmzyUbW9v\
# bijT/tHQbb3AVvOrHQkl6zd3cUcv9zs/XuP2pnojgHbLZ0xmnucVMam7am30kZ/yubQHh/ZVZ9DKNU
r1qVxPpZp04IZdQVmubkzZDLAgFRybZr2iH5tOH\
# EScjOKRhUUYbTx74OQKil1vLFvd4sWDCBhe+W4DCjeTxM0hzvOvVBBF4Me0U7UDUw/WIoS1ltFvAig
pyhfgNE3qLFwj7UAcByDxCmDJ8wCXOFmAHes88G\
# wFSCJFPeaBqWdbJwBEOQBBirde46HNAeUgyN5MHvQdEBLj13NgDKJPAISekeNBiWdAV8B6xVIKJwH1
BZDlZj8JLVt4An45/B86cGMiAABnrioYJrdvh1h\
# HgJNSutIWJPszYyOZYMyi3ZyFCCm+HH88KhF9A33HkAAAAABJRU5ErkJggg=="/>&nbsp;&nbsp;\
# <a href="https://purple11.com/free-luts/">Purple11 - Free LUTs</a></center>"}
#@gui : sep = value(0)_0+
#@gui : note = note{"<center><img src="data:image/png;base64,iVBORw0KGgoAAAANSUh EUgAAAB4AAAAgCAMAAAAynjhNAAAA1VBMVEX+\ #@gui : note = note{"<center><img src="data:image/png;base64,iVBORw0KGgoAAAANSUh EUgAAAB4AAAAgCAMAAAAynjhNAAAA1VBMVEX+\
# /v4ODg4DAwP7+/sQEBD5+flRUVFubm7z8/Pw8PCioqJSUlKAgIC3t7dqamo6Ojrk5OTn5+elpaU/Pz 8iIiIYGBjh4eHa2trX19eysrKtra1eXl5YWFg9P\ # /v4ODg4DAwP7+/sQEBD5+flRUVFubm7z8/Pw8PCioqJSUlKAgIC3t7dqamo6Ojrk5OTn5+elpaU/Pz 8iIiIYGBjh4eHa2trX19eysrKtra1eXl5YWFg9P\
# T0tLS0kJCT29vb09PSJiYlwcHBgYGBVVVVMTExCQkIyMjInJycUFBTt7e3U1NTR0dHOzs6+vr66urq RkZFzc3NJSUkgICAICAjJycnFxcWvr6+cnJx3d3\ # T0tLS0kJCT29vb09PSJiYlwcHBgYGBVVVVMTExCQkIyMjInJycUFBTt7e3U1NTR0dHOzs6+vr66urq RkZFzc3NJSUkgICAICAjJycnFxcWvr6+cnJx3d3\
# dlZWXp6em/v7+1tbWWlpZ7e3s3Nzfc3Nynp6eEhIR8fHxaWlqIUZ+rAAABlklEQVQoz4WT13KrMBRF ZUsCgwFhegdjinFvcb1p997k/z8pJJa7ZrIeNGd\ # dlZWXp6em/v7+1tbWWlpZ7e3s3Nzfc3Nynp6eEhIR8fHxaWlqIUZ+rAAABlklEQVQoz4WT13KrMBRF ZUsCgwFhegdjinFvcb1p997k/z8pJJa7ZrIeNGd\
# maaTzsDdoXvFk6PFT8xrQbJxZBZ7lHVaNCxeNVrlmQ4BVzY/Rg0YkHWPwDXbmZHCrzXdp0gInWqOUm BeN+spsCMEFOHxe9AdUV4HXweAW+Gd7qFCtUbGz\ # maaTzsDdoXvFk6PFT8xrQbJxZBZ7lHVaNCxeNVrlmQ4BVzY/Rg0YkHWPwDXbmZHCrzXdp0gInWqOUm BeN+spsCMEFOHxe9AdUV4HXweAW+Gd7qFCtUbGz\
# IGCg7nKzCcJx92ch4UyL3u5O2g3AHefNnueVXq9XH+mmS1fkEdVQI1wYZYoSxsWSc5N7LXLeG2cL68 K37AU3ftBtWWqrdi+YQbjVXczSYync1v/OdI+ll\ # IGCg7nKzCcJx92ch4UyL3u5O2g3AHefNnueVXq9XH+mmS1fkEdVQI1wYZYoSxsWSc5N7LXLeG2cL68 K37AU3ftBtWWqrdi+YQbjVXczSYync1v/OdI+ll\
# 3PyfwihkJZr1uNGFCmS9JZxosDUhFSryiDiEDBXs5ws/vRLF7N1Bz8v9xPl4DD0S60B3hXiNNhbD3r 5qnAdAKyPQlv0xdad9kr93a81dIIyjPIJvNFAnc\ # 3PyfwihkJZr1uNGFCmS9JZxosDUhFSryiDiEDBXs5ws/vRLF7N1Bz8v9xPl4DD0S60B3hXiNNhbD3r 5qnAdAKyPQlv0xdad9kr93a81dIIyjPIJvNFAnc\
# ryOqkHPJrJ8lQ9ad1JjhHDGB4fwnRMRnkDoFxTAYvOP9+sw4SizGWE6YWPBqco8lMBXkthQ6NIg0xS Jznb7t95aN7WYKDPR7QG9mtpPpYoDmiJsuquRBT\ # ryOqkHPJrJ8lQ9ad1JjhHDGB4fwnRMRnkDoFxTAYvOP9+sw4SizGWE6YWPBqco8lMBXkthQ6NIg0xS Jznb7t95aN7WYKDPR7QG9mtpPpYoDmiJsuquRBT\
# Dd1VXMa4r+EuBvwA2hClvJ4GaGgAAAABJRU5ErkJggg=="/>&nbsp;&nbsp;<a href="https://w ww.rocketstock.com/free-after-effects-t\ # Dd1VXMa4r+EuBvwA2hClvJ4GaGgAAAABJRU5ErkJggg=="/>&nbsp;&nbsp;<a href="https://w ww.rocketstock.com/free-after-effects-t\
# emplates/35-free-luts-for-color-grading-videos/">RocketStock 35 Free LUTs for Color Grading</a></center>"} # emplates/35-free-luts-for-color-grading-videos/">RocketStock 35 Free LUTs for Color Grading</a></center>"}
skipping to change at line 32703 skipping to change at line 33326
# NDk02e10Ohrvg1RasU80Y0OFeN3+kw0YkVZ13vfZxbinfo9ywON9VGb9GpsdlZ+j0nisgcaZbRtjrB jeSFSQOZNtIT+sXCyvDdZaGHyqGatnzaOgfN/Cv\ # NDk02e10Ohrvg1RasU80Y0OFeN3+kw0YkVZ13vfZxbinfo9ywON9VGb9GpsdlZ+j0nisgcaZbRtjrB jeSFSQOZNtIT+sXCyvDdZaGHyqGatnzaOgfN/Cv\
# trop+Tt/AaGEIveYkZg1E3xLmJa/mfVb3/xQ595HziY2OSYUTspnrkrwcTaOb4cZkauCx2cGK/5VV1 XjawMWSdV2vpUm/Z7DiQCnZ+n8w6zN8Bv4Bs+PS\ # trop+Tt/AaGEIveYkZg1E3xLmJa/mfVb3/xQ595HziY2OSYUTspnrkrwcTaOb4cZkauCx2cGK/5VV1 XjawMWSdV2vpUm/Z7DiQCnZ+n8w6zN8Bv4Bs+PS\
# zRd3ZU8AAAAASUVORK5CYII="/>&nbsp;&nbsp;<a href="https://www.smallhd.com/commun ity/movie-looks-download">SmallHD Free \ # zRd3ZU8AAAAASUVORK5CYII="/>&nbsp;&nbsp;<a href="https://www.smallhd.com/commun ity/movie-looks-download">SmallHD Free \
# Movie Look Pack</a></center>"} # Movie Look Pack</a></center>"}
#@gui : sep = value(0)_2+ #@gui : sep = value(0)_2+
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>. #@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.
#@gui : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Latest Update: <i>2019/1 0/11</i>.</small>") #@gui : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Latest Update: <i>2019/1 0/11</i>.</small>")
fx_color_presets : fx_color_presets :
category=${arg\ 1+$1,abigailgonzalez,alexjordan,creative,ericellerbrock,filter category=${arg\ 1+$1,abigailgonzalez,alexjordan,cinematic,cinematic_travel,cre
grade,jtsemple,lutifyme,moviz,\ ative,ericellerbrock,filtergrade,\
ohadperetz,on1,picturefx,pixlsus,rocketstock,shamoonabbas jtsemple,kyler_holland,lutifyme,moviz,ohadperetz,on1,pict
i,smallhd,others} urefx,pixlsus,purple11,rocketstock,\
shamoonabbasi,smallhd,others}
presets=${-_fx_cluts_$category} presets=${-_fx_cluts_$category}
index={arg(1+$1,${2-17})} index={arg(1+$1,${2-21})}
thumbsize,strength,brightness,contrast,gamma,hue,saturation,normalize=${18-25} thumbsize,strength,brightness,contrast,gamma,hue,saturation,normalize=${22-29}
if $normalize==1" || "$normalize==3 # Pre-normalization if $normalize==1" || "$normalize==3 # Pre-normalization
repeat $! l[$>] split_opacity balance_gamma[0] , a c endl done repeat $! l[$>] split_opacity balance_gamma[0] , a c endl done
fi fi
if $index>=2 # Apply CLUT if $index>=2 # Apply CLUT
clut ${arg\ 1+$index-2,$presets} clut ${arg\ 1+$index-2,$presets}
repeat $!-1 if $strength<100 +map_clut[$>] . j[$>] .,0,0,0,0,{$strength%} rm . else map_clut[$>] . fi done repeat $!-1 if $strength<100 +map_clut[$>] . j[$>] .,0,0,0,0,{$strength%} rm . else map_clut[$>] . fi done
rm. rm.
adjust_colors $brightness,$contrast,$gamma,$hue,$saturation,0,255 adjust_colors $brightness,$contrast,$gamma,$hue,$saturation,0,255
if $normalize==2" || "$normalize==3 repeat $! l[$>] split_opacity n[0] 0,255 a c endl done fi # Post-normalization if $normalize==2" || "$normalize==3 repeat $! l[$>] split_opacity n[0] 0,255 a c endl done fi # Post-normalization
skipping to change at line 32742 skipping to change at line 33367
({'$clut_name'}) _update_server_calibrate_name. clut_name={t} rm. ({'$clut_name'}) _update_server_calibrate_name. clut_name={t} rm.
to. $clut_name,0.01~,0.01~,7.5%,1 to. $clut_name,0.01~,0.01~,7.5%,1
done done
rm[$N] rm[$N]
progress {$>*100/($Np-1)} progress {$>*100/($Np-1)}
done done
k[$N--1] frame 1,1,0,0,0,255 - 128 append_tiles {s=floor(sqrt($!));w>h?[s,0] :[0,s]} + 128 k[$N--1] frame 1,1,0,0,0,255 - 128 append_tiles {s=floor(sqrt($!));w>h?[s,0] :[0,s]} + 128
fi fi
fx_color_presets_preview : fx_color_presets_preview :
index={arg(1+$1,${2-17})} index={arg(1+$1,${2-21})}
if !$index gui_warning_preview "Preview disabled in 'Collage' mode" if !$index gui_warning_preview "Preview disabled in 'Collage' mode"
else gui_split_preview "fx_color_presets $*",${26-28} else gui_split_preview "fx_color_presets $*",${30-32}
fi fi
u "{$1}{$2}_"{2*($1==0)}\ u "{$1}{$2}_"{2*($1==0)}\
"{$3}_"{2*($1==1)}\ "{$3}_"{2*($1==1)}\
"{$4}_"{2*($1==2)}\ "{$4}_"{2*($1==2)}\
"{$5}_"{2*($1==3)}\ "{$5}_"{2*($1==3)}\
"{$6}_"{2*($1==4)}\ "{$6}_"{2*($1==4)}\
"{$7}_"{2*($1==5)}\ "{$7}_"{2*($1==5)}\
"{$8}_"{2*($1==6)}\ "{$8}_"{2*($1==6)}\
"{$9}_"{2*($1==7)}\ "{$9}_"{2*($1==7)}\
"{$10}_"{2*($1==8)}\ "{$10}_"{2*($1==8)}\
"{$11}_"{2*($1==9)}\ "{$11}_"{2*($1==9)}\
"{$12}_"{2*($1==10)}\ "{$12}_"{2*($1==10)}\
"{$13}_"{2*($1==11)}\ "{$13}_"{2*($1==11)}\
"{$14}_"{2*($1==12)}\ "{$14}_"{2*($1==12)}\
"{$15}_"{2*($1==13)}\ "{$15}_"{2*($1==13)}\
"{$16}_"{2*($1==14)}\ "{$16}_"{2*($1==14)}\
"{$17}_"{2*($1==15)}\ "{$17}_"{2*($1==15)}\
"{$18}_"{1+!$index}\ "{$18}_"{2*($1==16)}\
"{$19}{$20}{$21}{$22}{$23}{$24}{$25}{$26}{$27,$28}"\ "{$19}_"{2*($1==17)}\
"{0}_"{2*($1!=13)}\ "{$20}_"{2*($1==18)}\
"{$21}_"{2*($1==19)}\
"{$22}_"{1+!$index}\
"{$23}{$24}{$25}{$26}{$27}{$28}{$29}{$30}{$31,$32}"\
"{0}_"{2*($1!=19)}\
"{0}_"{2*($1==0)}\ "{0}_"{2*($1==0)}\
"{0}_"{2*($1==1)}\ "{0}_"{2*($1==1)}\
"{0}_"{2*($1==2)}\ "{0}_"{2*($1==2)}\
"{0}_"{2*($1==3)}\ "{0}_"{2*($1==3)}\
"{0}_"{2*($1==4)}\ "{0}_"{2*($1==4)}\
"{0}_"{2*($1==5)}\ "{0}_"{2*($1==5)}\
"{0}_"{2*($1==6)}\ "{0}_"{2*($1==6)}\
"{0}_"{2*($1==7)}\ "{0}_"{2*($1==7)}\
"{0}_"{2*($1==8)}\ "{0}_"{2*($1==8)}\
"{0}_"{2*($1==9)}\ "{0}_"{2*($1==9)}\
"{0}_"{2*($1==10)}\ "{0}_"{2*($1==10)}\
"{0}_"{2*($1==11)}\ "{0}_"{2*($1==11)}\
"{0}_"{2*($1==12)}\ "{0}_"{2*($1==12)}\
"{0}_"{2*($1==13)}\ "{0}_"{2*($1==13)}\
"{0}_"{2*($1==14)}\ "{0}_"{2*($1==14)}\
"{0}_"{2*($1==15)}\
"{0}_"{2*($1==16)}\
"{0}_"{2*($1==17)}\
"{0}_"{2*($1==18)}\
"{0}" "{0}"
_fx_cluts_abigailgonzalez : _fx_cluts_abigailgonzalez :
u blade_runner,blue_house,blue_ice,caribe,cinema,cinema_2,cinema_3,\ u blade_runner,blue_house,blue_ice,caribe,cinema,cinema_2,cinema_3,\
cinema_4,cinema_5,cinema_noir,cinematic_for_flog,day_4nite,eterna_for_flog,f ilmic,\ cinema_4,cinema_5,cinema_noir,cinematic_for_flog,day_4nite,eterna_for_flog,f ilmic,\
fuji_hdr,goldengate,matrix,monochrome_1,monochrome_2,old_west,science_fictio n fuji_hdr,goldengate,matrix,monochrome_1,monochrome_2,old_west,science_fictio n
_fx_cluts_alexjordan : _fx_cluts_alexjordan :
u action_magenta_01,action_red_01,adventure_1453,agressive_highligjtes_recover y_5,bleech_bypass_green,\ u action_magenta_01,action_red_01,adventure_1453,agressive_highligjtes_recover y_5,bleech_bypass_green,\
bleech_bypass_yellow_01,blue_dark,blue_shadows_01,bright_green_01,brownish,c olorful_0209,conflict_01,\ bleech_bypass_yellow_01,blue_dark,blue_shadows_01,bright_green_01,brownish,c olorful_0209,conflict_01,\
skipping to change at line 32801 skipping to change at line 33434
cross_process_cp_15,cross_process_cp_16,cross_process_cp_18,cross_process_cp _3,cross_process_cp_4,\ cross_process_cp_15,cross_process_cp_16,cross_process_cp_18,cross_process_cp _3,cross_process_cp_4,\
cross_process_cp_6,dark_green_02,dark_green_1,dark_place_01,dream_1,dream_85 ,faded_retro_01,faded_retro_02,\ cross_process_cp_6,dark_green_02,dark_green_1,dark_place_01,dream_1,dream_85 ,faded_retro_01,faded_retro_02,\
film_0987,film_9879,film_high_contrast,flat_30,green_2025,green_action,green _afternoon,\ film_0987,film_9879,film_high_contrast,flat_30,green_2025,green_action,green _afternoon,\
green_conflict,green_day_01,green_day_02,green_g_09,green_indoor,green_light ,harsh_day,harsh_sunset,\ green_conflict,green_day_01,green_day_02,green_g_09,green_indoor,green_light ,harsh_day,harsh_sunset,\
highlights_protection,indoor_blue,low_contrast_blue,low_key_01,magenta_day,m agenta_day_01,magenta_dream,\ highlights_protection,indoor_blue,low_contrast_blue,low_key_01,magenta_day,m agenta_day_01,magenta_dream,\
memories,moonlight_01,mostly_blue,muted_01,night_01,only_red,only_red_and_bl ue,operation_yellow,orange_dark_4,\ memories,moonlight_01,mostly_blue,muted_01,night_01,only_red,only_red_and_bl ue,operation_yellow,orange_dark_4,\
orange_dark_7,orange_dark_look,orange_underexposed,protect_highlights_01,red _afternoon_01,red_day_01,red_dream_01,\ orange_dark_7,orange_dark_look,orange_underexposed,protect_highlights_01,red _afternoon_01,red_day_01,red_dream_01,\
retro_brown_01,retro_magenta_01,retro_yellow_01,saturated_blue,smart_contras t,subtle_blue,subtle_green,yellow_55b,\ retro_brown_01,retro_magenta_01,retro_yellow_01,saturated_blue,smart_contras t,subtle_blue,subtle_green,yellow_55b,\
yellow_film_01 yellow_film_01
_fx_cluts_cinematic :
u deep,dimension,enchanted,flavin,frosted,shine,ultra_water,wipe
_fx_cluts_cinematic_travel :
u blue_cold_fade,bright_teal_orange,bright_warm,clear_teal_fade,cold_clear_blu
e,cold_clear_blue_1,deep_blue,\
deep_dark_warm,deep_high_contrast,deep_teal_fade,deep_warm_fade,faded_green,
greenish_contrasty,greenish_fade,\
greenish_fade_1,hard_teal_orange,neutral_teal_orange,neutral_warm_fade,smoot
h_clear,smooth_green_orange,\
smooth_teal_orange,teal_fade,very_warm_greenish,warm_dark_contrasty,warm_fad
e,warm_fade_1,warm_neutral,\
warm_sunset_red,warm_teal
_fx_cluts_creative : _fx_cluts_creative :
u anime,bleachbypass_1,bleachbypass_2,bleachbypass_3,bleachbypass_4,candleligh t,colornegative,crispwarm,crispwinter,\ u anime,bleachbypass_1,bleachbypass_2,bleachbypass_3,bleachbypass_4,candleligh t,colornegative,crispwarm,crispwinter,\
dropblues,edgyember,fallcolors,foggynight,futuristicbleak_1,futuristicbleak_ 2,futuristicbleak_3,futuristicbleak_4,\ dropblues,edgyember,fallcolors,foggynight,futuristicbleak_1,futuristicbleak_ 2,futuristicbleak_3,futuristicbleak_4,\
horrorblue,latesunset,moonlight,nightfromday,redblueyellow,smokey,softwarmin g,tealmagentagold,tealorange,\ horrorblue,latesunset,moonlight,nightfromday,redblueyellow,smokey,softwarmin g,tealmagentagold,tealorange,\
tealorange_1,tealorange_2,tealorange_3,tensiongreen_1,tensiongreen_2,tension green_3,tensiongreen_4 tealorange_1,tealorange_2,tealorange_3,tensiongreen_1,tensiongreen_2,tension green_3,tensiongreen_4
_fx_cluts_ericellerbrock : _fx_cluts_ericellerbrock :
u avalanche,black_star,helios,hydracore,hypnosis,killstreak,nemesis,night_blad e_4,paladin,seringe_4,serpent,terra_4,\ u avalanche,black_star,helios,hydracore,hypnosis,killstreak,nemesis,night_blad e_4,paladin,seringe_4,serpent,terra_4,\
victory,yellowstone victory,yellowstone
_fx_cluts_filtergrade : _fx_cluts_filtergrade :
u fgcinebasic,fgcinebright,fgcinecold,fgcinedrama,fgcinetealorange_1,fgcinetea lorange_2,fgcinevibrant,fgcinewarm u fgcinebasic,fgcinebright,fgcinecold,fgcinedrama,fgcinetealorange_1,fgcinetea lorange_2,fgcinevibrant,fgcinewarm
_fx_cluts_jtsemple : _fx_cluts_jtsemple :
u brightgreen,crispromance,crushin,frostedbeachpicnic,justpeachy,lateafternoon wanderlust,lushgreensummer,\ u brightgreen,crispromance,crushin,frostedbeachpicnic,justpeachy,lateafternoon wanderlust,lushgreensummer,\
magentacoffee,minimalistcaffeination,mysticpurplesunset,nostalgiahoney,sprin gmorning,toastedgarden,\ magentacoffee,minimalistcaffeination,mysticpurplesunset,nostalgiahoney,sprin gmorning,toastedgarden,\
winterlighthouse winterlighthouse
_fx_cluts_kyler_holland :
u kh1,kh2,kh3,kh4,kh5,kh6,kh7,kh8,kh9,kh10
_fx_cluts_lutifyme : _fx_cluts_lutifyme :
u hackmanite,herderite,heulandite,hiddenite,hilutite,howlite,hypersthene u hackmanite,herderite,heulandite,hiddenite,hilutite,howlite,hypersthene
_fx_cluts_moviz : _fx_cluts_moviz :
u moviz_1,moviz_2,moviz_3,moviz_4,moviz_5,moviz_6,moviz_7,moviz_8,moviz_9,movi z_10,\ u moviz_1,moviz_2,moviz_3,moviz_4,moviz_5,moviz_6,moviz_7,moviz_8,moviz_9,movi z_10,\
moviz_11,moviz_12,moviz_13,moviz_14,moviz_15,moviz_16,moviz_17,moviz_18,movi z_19,moviz_20,\ moviz_11,moviz_12,moviz_13,moviz_14,moviz_15,moviz_16,moviz_17,moviz_18,movi z_19,moviz_20,\
moviz_21,moviz_22,moviz_23,moviz_24,moviz_25,moviz_26,moviz_27,moviz_28,movi z_29,moviz_30,\ moviz_21,moviz_22,moviz_23,moviz_24,moviz_25,moviz_26,moviz_27,moviz_28,movi z_29,moviz_30,\
moviz_31,moviz_32,moviz_33,moviz_34,moviz_35,moviz_36,moviz_37,moviz_38,movi z_39,moviz_40,\ moviz_31,moviz_32,moviz_33,moviz_34,moviz_35,moviz_36,moviz_37,moviz_38,movi z_39,moviz_40,\
moviz_41,moviz_42,moviz_43,moviz_44,moviz_45,moviz_46,moviz_47,moviz_48 moviz_41,moviz_42,moviz_43,moviz_44,moviz_45,moviz_46,moviz_47,moviz_48
skipping to change at line 32861 skipping to change at line 33507
goldfx_perfect_sunset_01min,goldfx_perfect_sunset_05min,goldfx_perfect_sunse t_10min,\ goldfx_perfect_sunset_01min,goldfx_perfect_sunset_05min,goldfx_perfect_sunse t_10min,\
goldfx_spring_breeze,goldfx_summer_heat,technicalfx_backlight_filter,\ goldfx_spring_breeze,goldfx_summer_heat,technicalfx_backlight_filter,\
zilverfx_bw_solarization,zilverfx_infrared,zilverfx_vintage_bw zilverfx_bw_solarization,zilverfx_infrared,zilverfx_vintage_bw
_fx_cluts_pixlsus : _fx_cluts_pixlsus :
u amstragram,amstragram+,autumn,cinematic_lady_bird,cinematic_mexico,dark_blue s_in_sunlight,delicatessen,expired_69,\ u amstragram,amstragram+,autumn,cinematic_lady_bird,cinematic_mexico,dark_blue s_in_sunlight,delicatessen,expired_69,\
fadedlook,faded_print,hypressen,magenta_yellow,metropolis,modern_film,newspa per,night_spy,progressen,prussian_blue,\ fadedlook,faded_print,hypressen,magenta_yellow,metropolis,modern_film,newspa per,night_spy,progressen,prussian_blue,\
seventies_magazine,street,sweet_bubblegum,sweet_gelatto,taiga,tarraco,unknow n,uzbek_bukhara,\ seventies_magazine,street,sweet_bubblegum,sweet_gelatto,taiga,tarraco,unknow n,uzbek_bukhara,\
uzbek_marriage,uzbek_samarcande,velvetia,warm_vintage,whiter_whites uzbek_marriage,uzbek_samarcande,velvetia,warm_vintage,whiter_whites
_fx_cluts_purple11 :
u good_morning,going_for_a_walk,nah,once_upon_a_time,serenity,passing_by,smoot
h_sailing,undeniable,undeniable2,\
urban_cowboy,well_see,you_can_do_it
_fx_cluts_rocketstock : _fx_cluts_rocketstock :
u arabica_12,ava_614,azrael_93,bourbon_64,byers_11,chemical_168,clayton_33,clo useau_54,cobi_3,contrail_35,\ u arabica_12,ava_614,azrael_93,bourbon_64,byers_11,chemical_168,clayton_33,clo useau_54,cobi_3,contrail_35,\
cubicle_99,django_25,domingo_145,\ cubicle_99,django_25,domingo_145,\
faded_47,folger_50,fusion_88,hyla_68,korben_214,lenox_340,lucky_64,mckinnon_ 75,milo_5,neon_770,paladin_1875,\ faded_47,folger_50,fusion_88,hyla_68,korben_214,lenox_340,lucky_64,mckinnon_ 75,milo_5,neon_770,paladin_1875,\
pasadena_21,pitaya_15,reeve_38,remy_24,sprocket_231,teigen_28,trent_18,tweed _71,vireo_37,zed_32,zeke_39 pasadena_21,pitaya_15,reeve_38,remy_24,sprocket_231,teigen_28,trent_18,tweed _71,vireo_37,zed_32,zeke_39
_fx_cluts_shamoonabbasi : _fx_cluts_shamoonabbasi :
u city_7,coffee_44,date_39,day_for_night,denoiser_simple_40,desert_gold_37,dir ections_23,drop_green_tint_14,\ u city_7,coffee_44,date_39,day_for_night,denoiser_simple_40,desert_gold_37,dir ections_23,drop_green_tint_14,\
elegance_38,golden_night_softner_43,golden_sony_37,green_15,happyness_133,hlg_ 1_1,industrial_33,morning_6,\ elegance_38,golden_night_softner_43,golden_sony_37,green_15,happyness_133,hlg_ 1_1,industrial_33,morning_6,\
morroco_16,night_king_141,rest_33,shadow_king_39,spy_29,thriller_2,turkiest_42 ,vintage_163,wooden_gold_20 morroco_16,night_king_141,rest_33,shadow_king_39,spy_29,thriller_2,turkiest_42 ,vintage_163,wooden_gold_20
skipping to change at line 34520 skipping to change at line 35170
_fx_cluts_colorslide : _fx_cluts_colorslide :
u agfa_precisa_100,fuji_astia_100f,fuji_fp_100c,fuji_provia_100f,fuji_provia_4 00f,fuji_provia_400x,fuji_sensia_100,\ u agfa_precisa_100,fuji_astia_100f,fuji_fp_100c,fuji_provia_100f,fuji_provia_4 00f,fuji_provia_400x,fuji_sensia_100,\
fuji_superia_200_xpro,fuji_velvia_50,fuji_astia_100_generic,fuji_provia_100_ generic,fuji_velvia_100_generic,\ fuji_superia_200_xpro,fuji_velvia_50,fuji_astia_100_generic,fuji_provia_100_ generic,fuji_velvia_100_generic,\
kodak_kodachrome_64_generic,kodak_ektachrome_100_vs_generic,kodak_e-100_gx_e ktachrome_100,kodak_ektachrome_100_vs,\ kodak_kodachrome_64_generic,kodak_ektachrome_100_vs_generic,kodak_e-100_gx_e ktachrome_100,kodak_ektachrome_100_vs,\
kodak_elite_chrome_200,\ kodak_elite_chrome_200,\
kodak_elite_chrome_400,kodak_elite_extracolor_100,kodak_kodachrome_200,kodak _kodachrome_25,kodak_kodachrome_64,\ kodak_elite_chrome_400,kodak_elite_extracolor_100,kodak_kodachrome_200,kodak _kodachrome_25,kodak_kodachrome_64,\
lomography_x-pro_slide_200,\ lomography_x-pro_slide_200,\
polaroid_669,polaroid_690,polaroid_polachrome polaroid_669,polaroid_690,polaroid_polachrome
#@gui Transfer Colors [Variational] : fx_transfer_rgb, fx_transfer_rgb_preview(1 )+ #@gui Transfer Colors [Variational] : fx_transfer_rgb, fx_transfer_rgb_preview(1 )+ : *
#@gui : Regularization = int(8,0,32) #@gui : Regularization = int(8,0,32)
#@gui : Preserve Luminance = float(0.2,0,1) #@gui : Preserve Luminance = float(0.2,0,1)
#@gui : Precision = _choice(1,"Low","Normal","High","Very High") #@gui : Precision = _choice(1,"Low","Normal","High","Very High")
#@gui : Reference Colors = choice("Bottom Layer","Top Layer") #@gui : Reference Colors = choice("Bottom Layer","Top Layer")
#@gui : Add User-Defined Constraints (Interactive) = _bool(0) #@gui : Add User-Defined Constraints (Interactive) = _bool(0)
#@gui : sep = separator() #@gui : sep = separator()
#@gui : Preview Reference = choice(1,"None","Up-Left","Up-Right","Bottom-Left"," #@gui : Preview_ref_point = point(1,1,0,0,255,255,255,128,4)_0
Bottom-Right")
#@gui : sep = separator()
#@gui : Preview Type = choice("Full","Forward Horizontal","Forward Vertical","Ba ckward Horizontal", #@gui : Preview Type = choice("Full","Forward Horizontal","Forward Vertical","Ba ckward Horizontal",
#@gui : "Backward Vertical","Duplicate Top","Duplicate Left","Duplicate Bottom", "Duplicate Right", #@gui : "Backward Vertical","Duplicate Top","Duplicate Left","Duplicate Bottom", "Duplicate Right",
#@gui : "Duplicate Horizontal","Duplicate Vertical","Checkered","Checkered Inver se") #@gui : "Duplicate Horizontal","Duplicate Vertical","Checkered","Checkered Inver se")
#@gui : Preview Split = point(50,50,0,0,200,200,200,0,10)_0 #@gui : Preview Split = point(50,50,0,0,200,200,200,0,10)_0
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note{"<small><b>Instructions:</b>\n #@gui : note = note{"<small><b>Instructions:</b>\n
#@gui : - This filter transfers the colors of one layer to all the others.\n #@gui : - This filter transfers the colors of one layer to all the others.\n
#@gui : - This is a <b>highly</b> experimental filter, it may be unstable or par ticularly long to render.\n
#@gui : - Don't forget to set the <i>Input layers...</i> option on the left to m anage your input layers.\n #@gui : - Don't forget to set the <i>Input layers...</i> option on the left to m anage your input layers.\n
#@gui : </small>"} #@gui : </small>"}
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp; #@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;
#@gui : Latest Update: <i>2015/04/04</i>.</small>") #@gui : Latest Update: <i>2015/04/04</i>.</small>")
fx_transfer_rgb : fx_transfer_rgb :
to_rgb to_rgb
ref={if($4,0,-1)} ref={$4?0:-1}
transfer_rgb[^$ref] [$ref],0.25,$1,$2,{2^(4+$3)},$5,0 transfer_rgb[^$ref] [$ref],0.25,$1,$2,{2^(4+$3)},$5,0
c 0,255
fx_transfer_rgb_preview : fx_transfer_rgb_preview :
if $!<2 gui_print_preview "Warning:",,"This filter requires at least two input layers to work properly." return fi if $!<2 gui_print_preview "Warning:",,"This filter requires at least two input layers to work properly." return fi
ref={if($4,0,-1)} ref={$4?0:-1}
pf=${-path_tmp}gmic_tmp o[$ref] $pf +store[$ref] _fx_trgb_ref
gui_split_preview[^$ref] "i "$pf" fx_transfer_rgb $1,$2,0,0,0 rm.",${-3--1} gui_split_preview[^$ref] "$_fx_trgb_ref fx_transfer_rgb $1,$2,0,0,0 rm.",${-3-
if $4 mv[0] $! fi -1}
if $6 repeat $!-1 l[$>,-1] _fx_trgb_ref=
+r2dy. {0,h/3} to. Reference,2,2,13,1,1,255 frame. 2,2,255 frame. 1,1,0
if $6==1 j[0] .,5,5 mv[$ref] $!
elif $6==2 j[0] .,{{0,w}-w-6},6 repeat $!-1 l[$>,-1]
elif $6==3 j[0] .,5,{{0,h}-h-6} rr2d[0] $_preview_width,$_preview_height,0,3 rr2d. {0,[w,h]/3},0,3
else j[0] .,{{0,w}-w-6},{{0,h}-h-6} to. Reference,2,2,13,1,1,255 frame. 2,2,255 frame. 1,1,0
fi j[0] .,$6%,$7%
rm. rm.
endl done fi endl done
#@gui Transfer Colors [Histogram] : fx_transfer_histogram, fx_transfer_histogram _preview(1)+ #@gui Transfer Colors [Histogram] : fx_transfer_histogram, fx_transfer_histogram _preview(1)+ : *
#@gui : Channel(s) = choice("All","RGBA [All]","RGB [All]","RGB [Red]","RGB [Gre en]","RGB [Blue]","RGBA [Alpha]", #@gui : Channel(s) = choice("All","RGBA [All]","RGB [All]","RGB [Red]","RGB [Gre en]","RGB [Blue]","RGBA [Alpha]",
#@gui : "Linear RGB [All]","Linear RGB [Red]","Linear RGB [Green]","Linear RGB [ Blue]","YCbCr [Luminance]", #@gui : "Linear RGB [All]","Linear RGB [Red]","Linear RGB [Green]","Linear RGB [ Blue]","YCbCr [Luminance]",
#@gui : "YCbCr [Blue-Red Chrominances]","YCbCr [Blue Chrominance]","YCbCr [Red C hrominance]", #@gui : "YCbCr [Blue-Red Chrominances]","YCbCr [Blue Chrominance]","YCbCr [Red C hrominance]",
#@gui : "YCbCr [Green Chrominance]","Lab [Lightness]","Lab [ab-Chrominances]","L ab [a-Chrominance]", #@gui : "YCbCr [Green Chrominance]","Lab [Lightness]","Lab [ab-Chrominances]","L ab [a-Chrominance]",
#@gui : "Lab [b-Chrominance]","Lch [ch-Chrominances]","Lch [c-Chrominance]","Lch [h-Chrominance]","HSV [Hue]", #@gui : "Lab [b-Chrominance]","Lch [ch-Chrominances]","Lch [c-Chrominance]","Lch [h-Chrominance]","HSV [Hue]",
#@gui : "HSV [Saturation]","HSV [Value]","HSI [Intensity]","HSL [Lightness]","CM YK [Cyan]","CMYK [Magenta]", #@gui : "HSV [Saturation]","HSV [Value]","HSI [Intensity]","HSL [Lightness]","CM YK [Cyan]","CMYK [Magenta]",
#@gui : "CMYK [Yellow]","CMYK [Key]","YIQ [Luma]","YIQ [Chromas]","RYB [All]","R YB [Red]","RYB [Yellow]","RYB [Blue]") #@gui : "CMYK [Yellow]","CMYK [Key]","YIQ [Luma]","YIQ [Chromas]","RYB [All]","R YB [Red]","RYB [Yellow]","RYB [Blue]")
#@gui : Reference Colors = choice("Bottom Layer","Top Layer")
#@gui : sep = separator() #@gui : sep = separator()
#@gui : Preview_ref_point = point(1,1,0,0,255,255,255,128,4)_0
#@gui : Preview Type = choice("Full","Forward Horizontal","Forward Vertical","Ba ckward Horizontal", #@gui : Preview Type = choice("Full","Forward Horizontal","Forward Vertical","Ba ckward Horizontal",
#@gui : "Backward Vertical","Duplicate Top","Duplicate Left","Duplicate Bottom", "Duplicate Right", #@gui : "Backward Vertical","Duplicate Top","Duplicate Left","Duplicate Bottom", "Duplicate Right",
#@gui : "Duplicate Horizontal","Duplicate Vertical","Checkered","Checkered Inver se") #@gui : "Duplicate Horizontal","Duplicate Vertical","Checkered","Checkered Inver se")
#@gui : Preview Split = point(50,50,0,0,200,200,200,0,10)_0 #@gui : Preview Split = point(50,50,0,0,200,200,200,0,10)_0
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note{"<small><b>Note: </b> #@gui : note = note{"<small><b>Note: </b>
#@gui : The bottom layer contains the reference colors.\n
#@gui : This filter needs at least two layers to work properly. Set the <i>Input layers</i> option to handle #@gui : This filter needs at least two layers to work properly. Set the <i>Input layers</i> option to handle
#@gui : multiple input layers. #@gui : multiple input layers.
#@gui : </small>"} #@gui : </small>"}
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp; #@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;
#@gui : Latest Update: <i>2018/11/26</i>.</small>") #@gui : Latest Update: <i>2020/01/13</i>.</small>")
fx_transfer_histogram : fx_transfer_histogram :
to_colormode 0 to_rgb
ref={$2?0:-1}
transfer_histogram[^$ref] [$ref],256,$1
c 0,255
fx_transfer_histogram_preview :
if $!<2 gui_print_preview "Warning:",,"This filter requires at least two input
layers to work properly." return fi
ref={$2?0:-1}
+store[$ref] _fx_trgb_ref
gui_split_preview[^$ref] "$_fx_trgb_ref fx_transfer_histogram $1,0 rm.",${-3--
1}
_fx_trgb_ref=
mv[$ref] $!
repeat $!-1 l[$>,-1] repeat $!-1 l[$>,-1]
nm0={0,n} nm1={1,n} rr2d[0] $_preview_width,$_preview_height,0,3 rr2d. {0,[w,h]/3},0,3
m "_split : s z r.. "{[w#0,h#0,1,s#0,0]}" r. "{[w#1,h#1,1,s#1,0]} to. Reference,2,2,13,1,1,255 frame. 2,2,255 frame. 1,1,0
a z j[0] .,$3%,$4%
ac "_split transfer_histogram.. . a z",$1 rm.
_split uncommand _split
nm[0] $nm0 nm[1] $nm1
endl done endl done
fx_transfer_histogram_preview : #@gui Transfer Colors [PCA] : fx_transfer_pca, fx_transfer_pca_preview(1)+ : *
to_colormode 0 #@gui : Channel(s) = choice("All","RGBA [All]","RGB [All]","RGB [Red]","RGB [Gre
en]","RGB [Blue]","RGBA [Alpha]",
#@gui : "Linear RGB [All]","Linear RGB [Red]","Linear RGB [Green]","Linear RGB [
Blue]","YCbCr [Luminance]",
#@gui : "YCbCr [Blue-Red Chrominances]","YCbCr [Blue Chrominance]","YCbCr [Red C
hrominance]",
#@gui : "YCbCr [Green Chrominance]","Lab [Lightness]","Lab [ab-Chrominances]","L
ab [a-Chrominance]",
#@gui : "Lab [b-Chrominance]","Lch [ch-Chrominances]","Lch [c-Chrominance]","Lch
[h-Chrominance]","HSV [Hue]",
#@gui : "HSV [Saturation]","HSV [Value]","HSI [Intensity]","HSL [Lightness]","CM
YK [Cyan]","CMYK [Magenta]",
#@gui : "CMYK [Yellow]","CMYK [Key]","YIQ [Luma]","YIQ [Chromas]","RYB [All]","R
YB [Red]","RYB [Yellow]","RYB [Blue]")
#@gui : Reference Colors = choice("Bottom Layer","Top Layer")
#@gui : sep = separator()
#@gui : Preview_ref_point = point(1,1,0,0,255,255,255,128,4)_0
#@gui : Preview Type = choice("Full","Forward Horizontal","Forward Vertical","Ba
ckward Horizontal",
#@gui : "Backward Vertical","Duplicate Top","Duplicate Left","Duplicate Bottom",
"Duplicate Right",
#@gui : "Duplicate Horizontal","Duplicate Vertical","Checkered","Checkered Inver
se")
#@gui : Preview Split = point(50,50,0,0,200,200,200,0,10)_0
#@gui : sep = separator()
#@gui : note = note{"<small><b>Note: </b>
#@gui : This filter needs at least two layers to work properly. Set the <i>Input
layers</i> option to handle
#@gui : multiple input layers.
#@gui : </small>"}
#@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n
bsp;&nbsp;&nbsp;&nbsp;
#@gui : Latest Update: <i>2020/01/13</i>.</small>")
fx_transfer_pca :
to_rgb
ref={$2?0:-1}
transfer_pca[^$ref] [$ref],$1
c 0,255
fx_transfer_pca_preview :
if $!<2 gui_print_preview "Warning:",,"This filter requires at least two input
layers to work properly." return fi
ref={$2?0:-1}
+store[$ref] _fx_trgb_ref
gui_split_preview[^$ref] "$_fx_trgb_ref fx_transfer_pca $1,0 rm.",${-3--1}
_fx_trgb_ref=
mv[$ref] $!
repeat $!-1 l[$>,-1] repeat $!-1 l[$>,-1]
i[0] [0] fx_transfer_histogram[-2,-1] $1 rm. rr2d[0] $_preview_width,$_preview_height,0,3 rr2d. {0,[w,h]/3},0,3
a z gui_split_preview "s z k.",${-3--1} to. Reference,2,2,13,1,1,255 frame. 2,2,255 frame. 1,1,0
j[0] .,$3%,$4%
rm.
endl done endl done
#@gui User-Defined : fx_custom_transform, fx_custom_transform #@gui User-Defined : fx_custom_transform, fx_custom_transform
#@gui : Red - Green - Blue - Alpha = text{"i"} #@gui : Red - Green - Blue - Alpha = text{"i"}
#@gui : Red - Green - Blue = text{"i + 90*(x/w)*cos(i/10)"} #@gui : Red - Green - Blue = text{"i + 90*(x/w)*cos(i/10)"}
#@gui : Red = text{"i"} #@gui : Red = text{"i"}
#@gui : Green = text{"i"} #@gui : Green = text{"i"}
#@gui : Blue = text{"i"} #@gui : Blue = text{"i"}
#@gui : Alpha = text{"i"} #@gui : Alpha = text{"i"}
#@gui : Value Normalization = choice("None","RGB","RGBA") #@gui : Value Normalization = choice("None","RGB","RGBA")
skipping to change at line 37645 skipping to change at line 38341
#@gui : Preview Split = point(50,50,0,0,200,200,200,0,10)_0 #@gui : Preview Split = point(50,50,0,0,200,200,200,0,10)_0
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp; #@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;
#@gui : Latest Update: <i>2010/29/12</i>.</small>") #@gui : Latest Update: <i>2010/29/12</i>.</small>")
fx_sharpen_inversediff : fx_sharpen_inversediff :
ac "gui_parallel_overlap \"repeat $2 sharpen $1 c 0,255 done\",$4,$5",$3,1 ac "gui_parallel_overlap \"repeat $2 sharpen $1 c 0,255 done\",$4,$5",$3,1
fx_sharpen_inversediff_preview : fx_sharpen_inversediff_preview :
gui_split_preview "fx_sharpen_inversediff $*",${-3--1} gui_split_preview "fx_sharpen_inversediff $*",${-3--1}
#@gui Sharpen [Multiscale] : fx_sharpen_multiscale, fx_sharpen_multiscale_previe
w(0)
#@gui : Strength (%) = float(15,0,100)
#@gui : Regularity (%) = float(20,0,100)
#@gui : sep = separator()
#@gui : Channel(s) = choice(11,"All","RGBA [All]","RGB [All]","RGB [Red]","RGB [
Green]","RGB [Blue]","RGBA [Alpha]",
#@gui : "Linear RGB [All]","Linear RGB [Red]","Linear RGB [Green]","Linear RGB [
Blue]","YCbCr [Luminance]",
#@gui : "YCbCr [Blue-Red Chrominances]","YCbCr [Blue Chrominance]","YCbCr [Red C
hrominance]",
#@gui : "YCbCr [Green Chrominance]","Lab [Lightness]","Lab [ab-Chrominances]","L
ab [a-Chrominance]",
#@gui : "Lab [b-Chrominance]","Lch [ch-Chrominances]","Lch [c-Chrominance]","Lch
[h-Chrominance]","HSV [Hue]",
#@gui : "HSV [Saturation]","HSV [Value]","HSI [Intensity]","HSL [Lightness]","CM
YK [Cyan]","CMYK [Magenta]",
#@gui : "CMYK [Yellow]","CMYK [Key]","YIQ [Luma]","YIQ [Chromas]","RYB [All]","R
YB [Red]","RYB [Yellow]","RYB [Blue]")
#@gui : sep = separator()
#@gui : Preview Type = choice("Full","Forward Horizontal","Forward Vertical","Ba
ckward Horizontal",
#@gui : "Backward Vertical","Duplicate Top","Duplicate Left","Duplicate Bottom",
"Duplicate Right",
#@gui : "Duplicate Horizontal","Duplicate Vertical","Checkered","Checkered Inver
se")
#@gui : Preview Split = point(50,50,0,0,200,200,200,0,10)_0
#@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n
bsp;&nbsp;&nbsp;&nbsp;
#@gui : Latest Update: <i>2020/01/14</i>.</small>")
fx_sharpen_multiscale :
ac "_fx_sharpen_multiscale $1,$2",$3
fx_sharpen_multiscale_preview :
gui_split_preview "fx_sharpen_multiscale $*",${-3--1}
_fx_sharpen_multiscale :
repeat $! l[$>]
N={max(1,int(log2(min(w,h))-2))}
+l repeat $N +r. 50%,50%,1,100%,2 +r. ..,..,1,100%,5 -[-3,-1] done endl # De
compose
guided[0] 4,100 # Smooth guide image
# Process each scale.
repeat $!-1 l[0,{$>+1}]
+r[0] [1],2
+equalize.. 1024
bilateral. ..,{2*$2%},100
j[1] .,0,0,0,0,{$1%}
k[0,1]
endl done
rm[0]
repeat $!-1 r. ..,..,1,100%,5 +[-2,-1] done # Recompose
c 0,255
endl done
#@gui Sharpen [Octave Sharpening] : fx_unsharp_octave, fx_unsharp_octave_preview (0) #@gui Sharpen [Octave Sharpening] : fx_unsharp_octave, fx_unsharp_octave_preview (0)
#@gui : Scales = int(4,1,10) #@gui : Scales = int(4,1,10)
#@gui : Maximal Radius = float(5,0,20) #@gui : Maximal Radius = float(5,0,20)
#@gui : Amount = float(3,0,10) #@gui : Amount = float(3,0,10)
#@gui : Threshold = float(0,0,255) #@gui : Threshold = float(0,0,255)
#@gui : sep = separator() #@gui : sep = separator()
#@gui : Channel(s) = choice("All","RGBA [All]","RGB [All]","RGB [Red]","RGB [Gre en]","RGB [Blue]","RGBA [Alpha]", #@gui : Channel(s) = choice("All","RGBA [All]","RGB [All]","RGB [Red]","RGB [Gre en]","RGB [Blue]","RGBA [Alpha]",
#@gui : "Linear RGB [All]","Linear RGB [Red]","Linear RGB [Green]","Linear RGB [ Blue]","YCbCr [Luminance]", #@gui : "Linear RGB [All]","Linear RGB [Red]","Linear RGB [Green]","Linear RGB [ Blue]","YCbCr [Luminance]",
#@gui : "YCbCr [Blue-Red Chrominances]","YCbCr [Blue Chrominance]","YCbCr [Red C hrominance]", #@gui : "YCbCr [Blue-Red Chrominances]","YCbCr [Blue Chrominance]","YCbCr [Red C hrominance]",
#@gui : "YCbCr [Green Chrominance]","Lab [Lightness]","Lab [ab-Chrominances]","L ab [a-Chrominance]", #@gui : "YCbCr [Green Chrominance]","Lab [Lightness]","Lab [ab-Chrominances]","L ab [a-Chrominance]",
skipping to change at line 38417 skipping to change at line 39158
#@gui : 'Fourier Analysis' filter. </small>") #@gui : 'Fourier Analysis' filter. </small>")
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp; #@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;
#@gui : Latest Update: <i>2010/29/12</i>.</small>") #@gui : Latest Update: <i>2010/29/12</i>.</small>")
fx_watermark_fourier : fx_watermark_fourier :
watermark_fourier "$1",$2 c 0,255 watermark_fourier "$1",$2 c 0,255
#@gui ____<b>Layers</b> #@gui ____<b>Layers</b>
#----------------------- #-----------------------
#@gui Align Layers : fx_align_layers, fx_align_layers_preview #@gui Align Layers : fx_align_layers, fx_align_layers_preview : *
#@gui : Alignment Type = choice(0,"Rigid","Non-Rigid") #@gui : Alignment Type = choice(0,"Rigid","Non-Rigid")
#@gui : Smoothness = float(0.7,0,1) #@gui : Smoothness = float(0.7,0,1)
#@gui : Scales = choice(0,"Auto","1","2","3","4","5","6","7","8") #@gui : Scales = choice(0,"Auto","1","2","3","4","5","6","7","8")
#@gui : Revert Layers = bool(0) #@gui : Revert Layers = bool(0)
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp; #@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;
#@gui : Latest Update: <i>2010/29/12</i>.</small>") #@gui : Latest Update: <i>2020/01/11</i>.</small>")
fx_align_layers : fx_align_layers :
to_colormode 0 to_colormode 0
r ${-max_wh},1,100%,0,0,0.5,0.5 r ${-max_wh},1,100%,0,0,0.5,0.5
if ${4=0} _fx_revert_layers fi if ${4=0} _fx_revert_layers fi
remove_opacity remove_opacity
if $1 register_nonrigid[^-1] .,$2,0.1,$3 if $1 register_nonrigid[^-1] .,$2,0.1,$3
else register_rigid[^-1] .,{3*$2} else register_rigid[^-1] .,$2
fi fi
fx_align_layers_preview : fx_align_layers_preview :
fx_align_layers $1,$2,0 blend_edges 0.1 fx_align_layers $1,$2,0 blend_edges 0.1
_fx_revert_layers : _fx_revert_layers :
repeat int($!/2) rv[{2*$>},{2*$>+1}] done repeat int($!/2) rv[{2*$>},{2*$>+1}] done
#@gui Blend [Average All] : fx_blend_average_all, fx_blend_average_all #@gui Blend [Average All] : fx_blend_average_all, fx_blend_average_all : *
#@gui : Colorspace = choice(0,"sRGB","Linear RGB","Lab") #@gui : Colorspace = choice(0,"sRGB","Linear RGB","Lab")
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note{"<small><b>Note:</b> #@gui : note = note{"<small><b>Note:</b>
#@gui : This filter takes multiple layers as input and average them. Set the <i> Input layers</i> option #@gui : This filter takes multiple layers as input and average them. Set the <i> Input layers</i> option
#@gui : to handle multiple input layers. #@gui : to handle multiple input layers.
#@gui : </small>"} #@gui : </small>"}
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp; #@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;
#@gui : Latest Update: <i>2013/11/08</i>.</small>") #@gui : Latest Update: <i>2013/11/08</i>.</small>")
fx_blend_average_all : fx_blend_average_all :
skipping to change at line 38470 skipping to change at line 39211
if $1==1 repeat $! l[$>] sh 0,2 srgb2rgb. rm. endl done if $1==1 repeat $! l[$>] sh 0,2 srgb2rgb. rm. endl done
elif $1==2 repeat $! l[$>] sh 0,2 srgb2rgb. rgb2lab. rm. endl done elif $1==2 repeat $! l[$>] sh 0,2 srgb2rgb. rgb2lab. rm. endl done
fi fi
_gb_bwd : _gb_bwd :
to_color to_color
if $1==1 repeat $! l[$>] sh 0,2 rgb2srgb. rm. endl done if $1==1 repeat $! l[$>] sh 0,2 rgb2srgb. rm. endl done
elif $1==2 repeat $! l[$>] sh 0,2 lab2rgb. rgb2srgb. rm. endl done elif $1==2 repeat $! l[$>] sh 0,2 lab2rgb. rgb2srgb. rm. endl done
fi fi
#@gui Blend [Edges] : fx_blend_edges, fx_blend_edges(0) #@gui Blend [Edges] : fx_blend_edges, fx_blend_edges(0) : *
#@gui : Opacity = float(1,0,1) #@gui : Opacity = float(1,0,1)
#@gui : Smoothness = float(0.8,0,5) #@gui : Smoothness = float(0.8,0,5)
#@gui : Revert Layers = bool(0) #@gui : Revert Layers = bool(0)
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note{"<small><b>Note:</b> #@gui : note = note{"<small><b>Note:</b>
#@gui : This filter needs two layers to work properly. Set the <i>Input layers</ i> option to handle #@gui : This filter needs two layers to work properly. Set the <i>Input layers</ i> option to handle
#@gui : multiple input layers. #@gui : multiple input layers.
#@gui : </small>"} #@gui : </small>"}
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp; #@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;
#@gui : Latest Update: <i>2013/21/01</i>.</small>") #@gui : Latest Update: <i>2013/21/01</i>.</small>")
fx_blend_edges : fx_blend_edges :
repeat int($!/2) l[$>,{$>+1}] if $3 rv fi +blend_edges[-2,-1] $2 rm... blend[- 2,-1] alpha,$1 endl done repeat int($!/2) l[$>,{$>+1}] if $3 rv fi +blend_edges[-2,-1] $2 rm... blend[- 2,-1] alpha,$1 endl done
#@gui Blend [Fade] : fx_blend_fade, fx_blend_fade(1) #@gui Blend [Fade] : fx_blend_fade, fx_blend_fade(1) : +
#@gui : Preset = choice{1,"Custom","Linear","Circular","Wave","Keftales"} #@gui : Preset = choice{1,"Custom","Linear","Circular","Wave","Keftales"}
#@gui : Offset = float(0,-1,1) #@gui : Offset = float(0,-1,1)
#@gui : Thinness = float(0,0,10) #@gui : Thinness = float(0,0,10)
#@gui : Sharpness = float(5,1,20) #@gui : Sharpness = float(5,1,20)
#@gui : Sharpest = bool(0) #@gui : Sharpest = bool(0)
#@gui : Revert Layers = bool(0) #@gui : Revert Layers = bool(0)
#@gui : Colorspace = choice("sRGB","Linear RGB","Lab") #@gui : Colorspace = choice("sRGB","Linear RGB","Lab")
#@gui : note = note{\n<small> #@gui : note = note{\n<small>
#@gui : The parameters below are used in most presets. #@gui : The parameters below are used in most presets.
#@gui : </small>} #@gui : </small>}
skipping to change at line 38533 skipping to change at line 39274
fi fi
blend_fade[^-1] . rm. blend_fade[^-1] . rm.
_gb_bwd $7 _gb_bwd $7
c 0,255 c 0,255
_fx_blend_fade1 : [0],[0],1,1,"a=$1*pi/2; x*cos(a) + y*sin(a)" _fx_blend_fade1 : [0],[0],1,1,"a=$1*pi/2; x*cos(a) + y*sin(a)"
_fx_blend_fade2 : [0],[0],1,1,0 =. 1,{($1+1)*50}%,{($2+1)*50}% distance. 1 _fx_blend_fade2 : [0],[0],1,1,0 =. 1,{($1+1)*50}%,{($2+1)*50}% distance. 1
_fx_blend_fade3 : [0],[0],1,1,0 =. 1,{($1+1)*50}%,{($2+1)*50}% distance. 1 *. {0 .01+$3/2} cos. _fx_blend_fade3 : [0],[0],1,1,0 =. 1,{($1+1)*50}%,{($2+1)*50}% distance. 1 *. {0 .01+$3/2} cos.
_fx_blend_fade4 : [0],[0],1,1,"((x-w*($1+0.5))*(y-h*($2+0.5)))%(0.2*w*h*(1.001+$ 3))" _fx_blend_fade4 : [0],[0],1,1,"((x-w*($1+0.5))*(y-h*($2+0.5)))%(0.2*w*h*(1.001+$ 3))"
#@gui Blend [Median] : fx_blend_median, fx_blend_median(0) #@gui Blend [Median] : fx_blend_median, fx_blend_median(0) : *
#@gui : Colorspace = choice(0,"sRGB","Linear RGB","Lab") #@gui : Colorspace = choice(0,"sRGB","Linear RGB","Lab")
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note{"<small><b>Note:</b> #@gui : note = note{"<small><b>Note:</b>
#@gui : This filter needs at least two layers to work properly. Set the <i>Input layers</i> option to handle #@gui : This filter needs at least two layers to work properly. Set the <i>Input layers</i> option to handle
#@gui : multiple input layers. #@gui : multiple input layers.
#@gui : </small>"} #@gui : </small>"}
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note("<small>Authors: <i>David Tschumperl&#233;</i> and <i>Iain F ergusson</i>. #@gui : note = note("<small>Authors: <i>David Tschumperl&#233;</i> and <i>Iain F ergusson</i>.
#@gui : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Latest Update: <i>2014/16/12</i>.</s mall>") #@gui : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Latest Update: <i>2014/16/12</i>.</s mall>")
fx_blend_median : fx_blend_median :
_gb_fwd $1 _gb_fwd $1
blend_median blend_median
_gb_bwd $1 _gb_bwd $1
#@gui Blend [Seamless] : fx_blend_seamless, fx_blend_seamless_preview(1) #@gui Blend [Seamless] : fx_blend_seamless, fx_blend_seamless_preview(1) : *
#@gui : Mixed Mode = bool(0) #@gui : Mixed Mode = bool(0)
#@gui : Inner Fading = float(0,0,100) #@gui : Inner Fading = float(0,0,100)
#@gui : Outer Fading = float(25,0,100) #@gui : Outer Fading = float(25,0,100)
#@gui : Colorspace = choice(0,"sRGB","Linear RGB","Lab") #@gui : Colorspace = choice(0,"sRGB","Linear RGB","Lab")
#@gui : sep = separator() #@gui : sep = separator()
#@gui : Output as Separate Layers = _bool(0) #@gui : Output as Separate Layers = _bool(0)
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note{"<small><b>Note:</b> #@gui : note = note{"<small><b>Note:</b>
#@gui : This filter needs at least two layers to work properly. Set the <i>Input layers</i> option to handle #@gui : This filter needs at least two layers to work properly. Set the <i>Input layers</i> option to handle
#@gui : multiple input layers. #@gui : multiple input layers.
skipping to change at line 38585 skipping to change at line 39326
+blend_seamless $1,$2%,$3% +blend_seamless $1,$2%,$3%
remove_opacity[0,-1] k[0,-1] rv sub_alpha[0] [1],1 remove_opacity[0,-1] k[0,-1] rv sub_alpha[0] [1],1
else else
blend_seamless $1,$2%,$3% # Output as a single layer. blend_seamless $1,$2%,$3% # Output as a single layer.
fi fi
_gb_bwd $4 _gb_bwd $4
fx_blend_seamless_preview : fx_blend_seamless_preview :
fx_blend_seamless ${1-4},0 fx_blend_seamless ${1-4},0
#@gui Blend [Standard] : fx_blend, fx_blend_preview #@gui Blend [Standard] : fx_blend, fx_blend_preview : *
#@gui : Mode = choice{6,"Add","Alpha","And","Average","Blue","Burn","Custom form ula","Darken","Difference", #@gui : Mode = choice{6,"Add","Alpha","And","Average","Blue","Burn","Custom form ula","Darken","Difference",
#@gui : "Divide","Dodge","Edges","Exclusion","Freeze","Grain Extract","Grain Mer ge","Green","Hard Light", #@gui : "Divide","Dodge","Edges","Exclusion","Freeze","Grain Extract","Grain Mer ge","Green","Hard Light",
#@gui : "Hard Mix","Hue","Interpolation","Lighten","Lightness","Linear Burn","Li near Light","Luminance", #@gui : "Hard Mix","Hue","Interpolation","Lighten","Lightness","Linear Burn","Li near Light","Luminance",
#@gui : "Multiply","Negation","Or","Overlay","Pin Light","Red","Reflect","Satura tion", #@gui : "Multiply","Negation","Or","Overlay","Pin Light","Red","Reflect","Satura tion",
#@gui : "Shape Area Max","Shape Area Max0","Shape Area Min","Shape Area Min0","S hape Average","Shape Average0", #@gui : "Shape Area Max","Shape Area Max0","Shape Area Min","Shape Area Min0","S hape Average","Shape Average0",
#@gui : "Shape Median","Shape Median0","Shape Min","Shape Min0","Shape Max","Sha pe Max0", #@gui : "Shape Median","Shape Median0","Shape Min","Shape Min0","Shape Max","Sha pe Max0",
#@gui : "Soft Burn","Soft Dodge","Soft Light","Screen","Stamp","Subtract","Value ","Vivid Light","Xor"} #@gui : "Soft Burn","Soft Dodge","Soft Light","Screen","Stamp","Subtract","Value ","Vivid Light","Xor"}
#@gui : Process As = choice("Two-by-Two","Upper Layer is the Top Layer for All B lends", #@gui : Process As = choice("Two-by-Two","Upper Layer is the Top Layer for All B lends",
#@gui : "Lower Layer is the Bottom Layer for All Blends") #@gui : "Lower Layer is the Bottom Layer for All Blends")
#@gui : Opacity (%) = float(100,0,100) #@gui : Opacity (%) = float(100,0,100)
skipping to change at line 38661 skipping to change at line 39402
if $4 gui_autocrop_layers fi if $4 gui_autocrop_layers fi
endl done endl done
fx_split_colors_preview : fx_split_colors_preview :
repeat $! l[$>] repeat $! l[$>]
+fx_split_colors ${1-4} drgba +fx_split_colors ${1-4} drgba
repeat $! l[$>] to ${arg\ {1+!!$>},"Original","#"$>},1,1,43,7,1,255 endl don e repeat $! l[$>] to ${arg\ {1+!!$>},"Original","#"$>},1,1,43,7,1,255 endl don e
frame 1,1,0 frame 3,3,255 to_rgba append_tiles , frame 1,1,0 frame 3,3,255 to_rgba append_tiles ,
endl done endl done
#@gui Fade Layers : fx_fade_layers, fx_fade_layers_preview #@gui Fade Layers : fx_fade_layers, fx_fade_layers_preview : +
#@gui : Inter-Frames = _int(10,2,100) #@gui : Inter-Frames = _int(10,2,100)
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note{"<small><b>Note:</b> #@gui : note = note{"<small><b>Note:</b>
#@gui : This filter needs at least two layers to work properly. Set the <i>Input layers</i> option to handle #@gui : This filter needs at least two layers to work properly. Set the <i>Input layers</i> option to handle
#@gui : multiple input layers. #@gui : multiple input layers.
#@gui : </small>"} #@gui : </small>"}
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp; #@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;
#@gui : Latest Update: <i>2012/04/08</i>.</small>") #@gui : Latest Update: <i>2012/04/08</i>.</small>")
fx_fade_layers : fx_fade_layers :
skipping to change at line 38683 skipping to change at line 39424
to_colormode 0 to_colormode 0
r ${-max_wh},1,100%,0,0,0.5,0.5 r ${-max_wh},1,100%,0,0,0.5,0.5
a z r 100%,100%,{(d-1)*$1+1},100%,3 s z a z r 100%,100%,{(d-1)*$1+1},100%,3 s z
fx_fade_layers_preview : fx_fade_layers_preview :
if $!<2 return fi if $!<2 return fi
to_colormode 0 to_colormode 0
r ${-max_wh},1,100%,0,0,0.5,0.5 r ${-max_wh},1,100%,0,0,0.5,0.5
k[0,1] + / 2 k[0,1] + / 2
#@gui Layers to Tiles : append_tiles, fx_append_tiles_preview(1) #@gui Layers to Tiles : append_tiles, fx_append_tiles_preview(1) : *
#@gui : X-Tiles = int(0,0,256) #@gui : X-Tiles = int(0,0,256)
#@gui : Y-Tiles = int(0,0,256) #@gui : Y-Tiles = int(0,0,256)
#@gui : note = note("<small>For both parameters, <i>0</i> means <i>automatic</i> .</small>") #@gui : note = note("<small>For both parameters, <i>0</i> means <i>automatic</i> .</small>")
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp; #@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;
#@gui : Latest Update: <i>2010/29/12</i>.</small>") #@gui : Latest Update: <i>2010/29/12</i>.</small>")
fx_append_tiles_preview : fx_append_tiles_preview :
frame 1,1,0,0,0,255 append_tiles $1,$2 frame 1,1,0,0,0,255 append_tiles $1,$2
#@gui Morph Layers : fx_morph_layers, gui_no_preview #@gui Morph Layers : fx_morph_layers, gui_no_preview : *
#@gui : Inter-Frames = _int(10,2,100) #@gui : Inter-Frames = _int(10,2,100)
#@gui : Smoothness = _float(0.2,0,2) #@gui : Smoothness = _float(0.2,0,2)
#@gui : Precision = _float(0.1,0,2) #@gui : Precision = _float(0.1,0,2)
#@gui : Revert Layers = bool(0) #@gui : Revert Layers = bool(0)
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp; #@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;
#@gui : Latest Update: <i>2010/29/12</i>.</small>") #@gui : Latest Update: <i>2010/29/12</i>.</small>")
fx_morph_layers : fx_morph_layers :
if ${4=0} _fx_revert_layers fi if ${4=0} _fx_revert_layers fi
to_rgb morph $1,$2,$3 to_rgb morph $1,$2,$3
skipping to change at line 38764 skipping to change at line 39505
max_wh=${-max_wh} max_wh=${-max_wh}
N=$! repeat $! l[$>] N=$! repeat $! l[$>]
cx={$9?$6+($10-$6)*$>/max($N-1,1):$6} cx={$9?$6+($10-$6)*$>/max($N-1,1):$6}
cy={$9?$7+($11-$7)*$>/max($N-1,1):$7} cy={$9?$7+($11-$7)*$>/max($N-1,1):$7}
r $max_wh,1,100%,0,0,$cx,$cy r $max_wh,1,100%,0,0,$cx,$cy
0 text. "#"{1+$>}" ",1,1,24,1,255 +dilate. 5 to_rgba[1] j[0] [1],2,0,0,0,1 ,[2],255 k[0] 0 text. "#"{1+$>}" ",1,1,24,1,255 +dilate. 5 to_rgba[1] j[0] [1],2,0,0,0,1 ,[2],255 k[0]
endl done endl done
frame 1,1,0 frame 3,3,255 append_tiles , frame 1,1,0 frame 3,3,255 append_tiles ,
endl done endl done
#@gui Pack : fx_pack, fx_pack_preview(1) #@gui Pack : fx_pack, fx_pack_preview(1) : *
#@gui : Order By = choice(2,"Width","Height","Maximum Dimension","Area","Name") #@gui : Order By = choice(2,"Width","Height","Maximum Dimension","Area","Name")
#@gui : Tends to Be Square = bool(1) #@gui : Tends to Be Square = bool(1)
#@gui : Force Transparency = bool(1) #@gui : Force Transparency = bool(1)
#@gui : Add Image Label = bool(0) #@gui : Add Image Label = bool(0)
#@gui : Font Height (px) = float(16,0,64)_0 #@gui : Font Height (px) = float(16,0,64)_0
#@gui : Font Colors = choice(1,"White on black","Black on white")_0 #@gui : Font Colors = choice(1,"White on black","Black on white")_0
#@gui : sep = separator() #@gui : sep = separator()
#@gui : Output Coordinates File = _bool(0) #@gui : Output Coordinates File = _bool(0)
#@gui : Output Folder = _folder() #@gui : Output Folder = _folder()
#@gui : sep = separator() #@gui : sep = separator()
skipping to change at line 42235 skipping to change at line 42976
else else
x0,y0,x1,y1=${1-4} x0,y0,x1,y1=${1-4}
status= status=
px,py=${12,13} px,py=${12,13}
fi fi
fx_mandelbrot $x0,$y0,$x1,$y1,${5--1} fx_mandelbrot $x0,$y0,$x1,$y1,${5--1}
x0r,y0r,x1r,y1r={"C = ["$px,$py"]%*w; dC = 0.5*w*(1 - 0.98*$14); round([C - dC , C + dC - 1])"} x0r,y0r,x1r,y1r={"C = ["$px,$py"]%*w; dC = 0.5*w*(1 - 0.98*$14); round([C - dC , C + dC - 1])"}
rectangle $x0r,$y0r,$x1r,$y1r,0.7,0xF0F0F0F0,255,255,255,255 rectangle $x0r,$y0r,$x1r,$y1r,0.7,0xF0F0F0F0,255,255,255,255
rectangle $x0r,$y0r,$x1r,$y1r,0.7,0x0F0F0F0F,0,0,0,255 rectangle $x0r,$y0r,$x1r,$y1r,0.7,0x0F0F0F0F,0,0,0,255
if $18 to "C0 = ( "$x0" , "$y0" )\nC1 = ( "$x1" , "$y1" )",2,2,16 fi if $18 to "Z0 = ( "{_$x0}" , "{_$y0}" )\nZ1 = ( "{_$x1}" , "{_$y1}" )",2,2,16 fi
u $status u $status
#@gui Neon Lightning : fx_neon_lightning, fx_neon_lightning(1) #@gui Neon Lightning : fx_neon_lightning, fx_neon_lightning(1)
#@gui : Source (%) = point(50,50) #@gui : Source (%) = point(50,50)
#@gui : R0 = float(0,0,100) #@gui : R0 = float(0,0,100)
#@gui : Destination (%) = point(50,50) #@gui : Destination (%) = point(50,50)
#@gui : R1 = float(100,0,100) #@gui : R1 = float(100,0,100)
#@gui : sep = separator() #@gui : sep = separator()
#@gui : Density = int(50,1,512) #@gui : Density = int(50,1,512)
#@gui : Glow = float(0.7,0,5) #@gui : Glow = float(0.7,0,5)
skipping to change at line 42277 skipping to change at line 43018
s c,-3 s c,-3
b[0] 3% b[0] 3%
distance. 1 *. -1 c. -{$9+1e-5},0 n. 0,1 sqrt. distance. 1 *. -1 c. -{$9+1e-5},0 n. 0,1 sqrt.
+b. $8%,1 n. 0,1 sqrt. n[-2,-1] 0,255 max[-2,-1] +b. $8%,1 n. 0,1 sqrt. n[-2,-1] 0,255 max[-2,-1]
. blend[0,1] value . blend[0,1] value
smooth 5,0,1,0.5,2,10,0 smooth 5,0,1,0.5,2,10,0
/. 255 ^. $14 *. 255 /. 255 ^. $14 *. 255
a c c 0,255 a c c 0,255
endl done endl done
#@gui Newton Fractal : fx_newton_fractal, fx_newton_fractal_preview
#@gui : X0 = value(-2)
#@gui : Y0 = value(-2)
#@gui : X1 = value(2)
#@gui : Y1 = value(2)
#@gui : note = note{"<span color="#FF0055"><b>Fractal Type:</b></span>"}
#@gui : Expression = choice(2,"Custom","z^^2 - 1","z^^3 - 1","z^^5 - 1","z^^6 +
z^^3 - 1","z^^8 + 15*z^^4 - 1")
#@gui : p(z) = text{"rot(35)*z^^3 - z^^2 + 1"}_1
#@gui : p'(z) = text{"3*z^^2 - 2*z"}_1
#@gui : p''(z) = text{"6*z - 2"}_1
#@gui : Descent method = choice(1,"Secant","Newton","Householder")
#@gui : Max iterations = int(200,16,1024)
#@gui : Precision = float(2,0,12)
#@gui : sep = separator()
#@gui : note = note{"<span color="#FF0055"><b>Rendering:</b></span>"}
#@gui : Coloring = choice(1,"By Custom Expression","By Iteration","By Value")
#
# Color by iteration
#
#@gui : Number of Colors = int(16,2,2048)
#@gui : Smoothness = int(8,1,256)
#@gui : Seed = int(255,0,65536)
#
# Color by value
#
#@gui : Colorspace = choice(2,"HSI","HSL","HSV")_0
#@gui : Hue min (%) = float(100,0,500)_0
#@gui : Hue max (%) = float(150,0,500)_0
#@gui : Lightness min (%) = float(20,0,500)_0
#@gui : Lightness max (%) = float(400,0,500)_0
#
# Custom coloring
#
#@gui : Colorspace = choice(3,"RGB,"HSI","HSL","HSV","Lab")_0
#@gui : Pre-Process = choice(2,"None","Equalize","Normalize","Equalize and Norma
lize")_0+
#@gui : note = note{"<small><span color="#EE5500"><b>Tips for Custom expressions
:</b></span>\n
#@gui : - Variables <b>i0,i1</b> stand for the real and imaginary parts of the i
terated complex number.\n
#@gui : - Variable <b>i2</b> is the number of iterations required for convergenc
e.\n
#@gui : - Variable <b>z</b> is the complex number with value <b>[ i0,i1 ]</b>.\n
#@gui : - Functions <b>p(z), dp(z)</b> and <b>d2p(z)</b> are the expressions use
d for computing the fractal.
#@gui : </small>"}
#@gui : Channel #1 = text{"carg(-z)"}_0
#@gui : Channel #2 = text{"(i0 + i1)/2"}_0
#@gui : Channel #3 = text{"10*(i2^0.4)"}_0
#@gui : Post-Process = choice(0,"None","Equalize","Normalize","Equalize and Norm
alize")_0
#
# Basic color adujstment
#
#@gui : Brightness (%) = float(0,-100,100)
#@gui : Contrast (%) = float(0,-100,100)
#@gui : Gamma (%) = float(0,-100,100)
#@gui : Hue (%) = float(0,-100,100)
#@gui : Saturation (%) = float(0,-100,100)
#@gui : Equalization (%) = float(0,0,100)
#@gui : Anti-aliasing = choice(2,"x1","x1.5","x2","x2.5","x3","x3.5","4")
#@gui : note = note{"<small><b>Note:</b> Anti-aliasing is applied on final rende
ring only, not on preview.</small>"}
#@gui : antialias_note = value(0)_2-
#@gui : sep = separator()
#
# Navigation
#
#@gui : note = note{"<span color="#FF0055"><b>Navigation:</b></span>"}
#@gui : Zoom Center = point(50,50,0,0,255,255,255,200)
#@gui : Zoom Factor = float(0.5,0,1)
#@gui : Angle = float(0,-180,180)
#@gui : Zoom In = button()
#@gui : Center = button()
#@gui : Zoom Out = button()
#@gui : Reset View = button()
#@gui : Display Coordinates on Preview Window = bool(1)
#@gui : Preview subsampling = choice(2,"None","x1.5","x2","x2.5","x3","x3.5","x4
")
#@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n
bsp;&nbsp;&nbsp;&nbsp;
#@gui : Latest Update: <i>2019/01/09</i>.</small>")
fx_newton_fractal : skip "${6=},${7=},${8=},${22=},${25=},${28=}"
repeat $! l[$>]
if !narg($_size) _size={max(w,h)} fi
rm
antialias={arg(1+$33,1,1.5,2,2.5,3,3.5,4)}
{$antialias*[$_size,$_size]}
if $5==1
pz="z^^2 - 1" dpz="2*zn" d2pz="2"
elif $5==2
pz="z^^3 - 1" dpz="3*z^^2" d2pz="6*z"
elif $5==3
pz="z^^5 - 1" dpz="5*z^^4" d2pz="20*z^^3"
elif $5==4
pz="z^^6 + z^^3 - 1" dpz="6*z^^5 + 3*z^^2" d2pz="30*z^^4 + 6*z"
elif $5==5
pz="z^^8 + 15*z^^4 - 1" dpz="8*z^^7 + 60*z^^3" d2pz="56*z^^6 + 180*z^^2";
else
pz="$6" dpz="$7" d2pz="$8"
fi
if !narg($pz) pz="[1,0]" fi
if !narg($dpz) dpz="[1,0]" fi
if !narg($d2pz) d2pz="[1,0]" fi
newton_fractal ${1-4},$38,$9,$10,{10^-$11},$pz,$dpz,$d2pz
if $12==1 # Color by iteration
channels 100%
srand $15 $13,1,1,3 rand. 0,255 r. {$13*$14},1,1,3,3 point. 0 map.. .,3 rm
.
elif $12==2 # Color by value
f "[ atan2(i1,i0),1,i2 ]" s c n... {[$17,$18]*360%} n. {[$19,$20]%} c. 0,1
a c
${"arg 1+$16,hsi,hsl,hsv"}2rgb
else # Custom coloring
if $22 # Pre-process values
s c,-2
if $22&1 equalize 1024 fi
if $22&2 /[-2] {-2,max(1e-5,abs(im),abs(iM))} n. 0,1 fi
a c
fi
f "*begin(
p(z) = ("$pz");
dp(z) = ("$dpz");
d2p(z) = ("$d2pz");
);
z = [ i0,i1 ];
[ (0;$23),(0;$24),(0;$25) ]"
if $26 # Post-process values
s c
if $26&1 equalize 1024 fi
if $26&2 normalize 0,1 fi
a c
fi
* 255 mod 256
if $21 ${"arg $21,hsi8,hsl8,hsv8,lab8"}2rgb fi # Convert to RGB colors
fi
r2dx $_size
if $32 ac "+equalize 1024 j.. .,0,0,0,0,{$32%} rm.",ycbcr_y fi
adjust_colors ${27-31},0,0,0,255
endl done
fx_newton_fractal_preview : skip "${6=},${7=},${8=},${22=},${25=},${28=}"
is_custom_expression={$5==0?2:1}
is_color_by_custom={$12==0?2:0}
is_color_by_iter={$12==1?2:0}
is_color_by_value={$12==2?2:0}
_size0={min(${-gui_preview_wh})}
_size={$_size0/arg(1+$44,1,1.5,2,2.5,3,3.5,4)}
angle=$38
if "$39 || $40 || $41"
x0,y0,x1,y1={"P0 = [${1,2}];
dP = [${3,4}] - P0;
M = P0 + 0.5*dP;
C = P0 + [${35,36}]%*dP;
C = M + rot(-$38)*(C - M);
zfact = $37*($39?1:$40?0:-2);
dC = 0.5*dP*(1 - 0.98*zfact);
[ C - dC, C + dC ]"}
px,py=50
elif $42
x0,y0,x1,y1=-2,-2,2,2
px,py=50
angle=0
else
x0,y0,x1,y1=${1-4}
px,py=${35,36}
fi
fx_newton_fractal $x0,$y0,$x1,$y1,$5,"$6","$7","$8",${9-22},"$23","$24","$25",
${26-32},0,${34-37},$angle,${39--1}
repeat $! l[$>]
r2dx $_size0,1
x0r,y0r,x1r,y1r={"C = [ "$px,$py" ]%*w; dC = 0.5*w*(1 - 0.98*$37); round([ C
- dC, C + dC - 1 ])"}
rectangle $x0r,$y0r,$x1r,$y1r,0.7,0xF0F0F0F0,255,255,255,255
rectangle $x0r,$y0r,$x1r,$y1r,0.7,0x0F0F0F0F,0,0,0,255
if $43 to "Z0 = ( "{_$x0}" , "{_$y0}" )\nZ1 = ( "{_$x1}" , "{_$y1}" )",2,2,1
6 fi
endl done
u "{"$x0"}{"$y0"}{"$x1"}{"$y1"}{$5}"\
"{$6}_"$is_custom_expression\
"{$7}_"$is_custom_expression\
"{$8}_"$is_custom_expression\
"{$9}{$10}{$11}{$12}"\
"{$13}_"$is_color_by_iter\
"{$14}_"$is_color_by_iter\
"{$15}_"$is_color_by_iter\
"{$16}_"$is_color_by_value\
"{$17}_"$is_color_by_value\
"{$18}_"$is_color_by_value\
"{$19}_"$is_color_by_value\
"{$20}_"$is_color_by_value\
"{$21}_"$is_color_by_custom\
"{$22}_"$is_color_by_custom\
"{$23}_"$is_color_by_custom\
"{$24}_"$is_color_by_custom\
"{$25}_"$is_color_by_custom\
"{$26}_"$is_color_by_custom\
"{$27}{$28}{$29}{$30}{$31}{$32}{$33}"\
"{$34}"_{$33==0?0:2}\
"{"$px,$py"}{$37}{"$angle"}{0}{0}{0}{0}{$43}{$44}"
#@gui Plasma : fx_plasma, fx_plasma(0) #@gui Plasma : fx_plasma, fx_plasma(0)
#@gui : Alpha = float(0.5,0,5) #@gui : Alpha = float(0.5,0,5)
#@gui : Beta = float(0,0,100) #@gui : Beta = float(0,0,100)
#@gui : Scale = int(8,2,10) #@gui : Scale = int(8,2,10)
#@gui : Randomize = bool(0) #@gui : Randomize = bool(0)
#@gui : Transparency = bool(0) #@gui : Transparency = bool(0)
#@gui : Color Balance = color(128,128,128) #@gui : Color Balance = color(128,128,128)
#@gui : sep = separator() #@gui : sep = separator()
#@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp; #@gui : note = note("<small>Author: <i>David Tschumperl&#233;</i>.&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;
#@gui : Latest Update: <i>2011/20/03</i>.</small>") #@gui : Latest Update: <i>2011/20/03</i>.</small>")
skipping to change at line 43684 skipping to change at line 44626
#@cli gallery_3drendering #@cli gallery_3drendering
#@cli : This entry defines some examples of 3D rendering filters for the G'MIC g allery page. #@cli : This entry defines some examples of 3D rendering filters for the G'MIC g allery page.
#@cli : $ sample leno,lion,leno resize 400,400 transition3d 20,5,5 rm. _fps=10 _ label="transition3d" #@cli : $ sample leno,lion,leno resize 400,400 transition3d 20,5,5 rm. _fps=10 _ label="transition3d"
#@cli : $ 256,192 fx_text_pointcloud3d 64,"G'MIC","Rocks!",1,200,220,255,255,255 ,255,255,2,2,1,19 _fps=10 \ #@cli : $ 256,192 fx_text_pointcloud3d 64,"G'MIC","Rocks!",1,200,220,255,255,255 ,255,255,2,2,1,19 _fps=10 \
# _label="3D~text~pointcloud" # _label="3D~text~pointcloud"
#@cli gallery_stylization #@cli gallery_stylization
#@cli : This entry defines some examples of image stylization for the G'MIC gall ery page. #@cli : This entry defines some examples of image stylization for the G'MIC gall ery page.
#@cli : $ sample car _fx_stylize starrynight _output_mode=1 \ #@cli : $ sample car _fx_stylize starrynight _output_mode=1 \
# +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,10,2,1.85,0 _ label="from~Van~Gogh:~Starry~Night" # +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,10,2,1.85,0 _ label="from~Van~Gogh:~Starry~Night"
#@cli : $ sample car _fx_stylize graytree _output_mode=1 \ #@cli : $ sample car _fx_stylize graytree _output_mode=1 \
# +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,20,2,1.85,0 _ label="from~Mondrian:~Gray~Tree" # +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,20,2,1.85,0 _ label="from~Mondrian:~Gray~Tree"
#@cli : $ sample car _fx_stylize yellowredblue _output_mode=1 \ #@cli : $ sample car _fx_stylize yellowredblue _output_mode=1 \
# +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,10,2,1.85,0 \ # +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,10,2,1.85,0 \
# _label="from~Kandinsky:~Yellow-Red-Blue" # _label="from~Kandinsky:~Yellow-Red-Blue"
#@cli : $ sample car _fx_stylize littlebayatlaciotat _output_mode=1 \ #@cli : $ sample car _fx_stylize littlebayatlaciotat _output_mode=1 \
# +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,2,2,1.85,0 \ # +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,2,2,1.85,0 \
# _label="from~Braque:~Little~Bay~at~La~Ciotat" # _label="from~Braque:~Little~Bay~at~La~Ciotat"
#@cli : $ sample car _fx_stylize leviaducalestaque _output_mode=1 \ #@cli : $ sample car _fx_stylize leviaducalestaque _output_mode=1 \
# +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,0,2,1.85,0 \ # +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,0,2,1.85,0 \
# _label="from~Braque:~Le~Viaduc~a~l'Estaque" # _label="from~Braque:~Le~Viaduc~a~l'Estaque"
#@cli : $ sample car _fx_stylize greatwave _output_mode=1 \ #@cli : $ sample car _fx_stylize greatwave _output_mode=1 \
# +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,1,2,1.85,0 _l abel="from~Hokusai:~The~Great~Wave" # +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,1,2,1.85,0 _l abel="from~Hokusai:~The~Great~Wave"
#@cli : $ sample elephant input ../img/hatching.png _output_mode=1 \ #@cli : $ sample elephant input ../img/hatching.png _output_mode=1 \
# +fx_stylize 1,4,0,0,1,2,3,0.5,0.1,2,5,0,0.7,0,0,1,0,5,5,7,1,30,0,2,1.85,0 _lab el="from~Hatch~Drawing" # +fx_stylize 1,4,0,0,1,2,3,0.5,0.1,3,3,0,0.7,0,0,1,0,5,5,7,1,30,0,2,1.85,0 _lab el="from~Hatch~Drawing"
#@cli : $ sample cat input ../img/hatching.png _output_mode=1 \ #@cli : $ sample cat input ../img/hatching.png _output_mode=1 \
# +fx_stylize 1,4,0,0,1,2,3,0.5,0.1,2,5,0,0.7,0,0,1,0,5,5,7,1,30,0,2,1.85,0 _lab el="from~Hatch~Drawing" # +fx_stylize 1,4,0,0,1,2,3,0.5,0.1,3,3,0,0.7,0,0,1,0,5,5,7,1,30,0,2,1.85,0 _lab el="from~Hatch~Drawing"
#@cli : $ sample bottles _fx_stylize starrynight _output_mode=1 \ #@cli : $ sample bottles _fx_stylize starrynight _output_mode=1 \
# +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,1,5,0,0.7,1,0,1,0,5,5,7,1,30,1,2,1.85,0 _l abel="from~Van~Gogh:~Starry~Night" # +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,1,2,1.85,0 _l abel="from~Van~Gogh:~Starry~Night"
#@cli : $ sample cat _fx_stylize summertime9a _output_mode=1 \ #@cli : $ sample cat _fx_stylize summertime9a _output_mode=1 \
# +fx_stylize 1,6,0,0,2,0,1,0.5,0.1,2,5,0,0.7,0,2,1,0,5,5,7,1,130,100,2,1.85,0 _ label="from~Pollock:~Summertime~No~9A" # +fx_stylize 1,6,0,0,2,0,1,0.5,0.1,3,3,0,0.7,0,2,1,0,5,5,7,1,130,100,2,1.85,0 _ label="from~Pollock:~Summertime~No~9A"
#@cli : $ sample cat _fx_stylize greatwave _output_mode=1 \ #@cli : $ sample cat _fx_stylize greatwave _output_mode=1 \
# +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,1,2,1.85,0 _l abel="from~Hokusai:~The~Great~Wave" # +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,1,2,1.85,0 _l abel="from~Hokusai:~The~Great~Wave"
#@cli : $ sample dog _fx_stylize convergence _output_mode=1 \ #@cli : $ sample dog _fx_stylize convergence _output_mode=1 \
# +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,50,2,1.85,0 _ label="from~Pollock:~Convergence" # +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,50,2,1.85,0 _ label="from~Pollock:~Convergence"
#@cli : $ sample dog _fx_stylize irises _output_mode=1 \ #@cli : $ sample dog _fx_stylize irises _output_mode=1 \
# +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,1,5,0,0.7,1,0,1,0,5,5,7,1,30,200,2,1.85,0 _label="from~Van~Gogh:~Irises" # +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,1,5,0,0.7,1,0,1,0,5,5,7,1,30,200,2,1.85,0 _label="from~Van~Gogh:~Irises"
#@cli : $ sample mandrill _fx_stylize themandola _output_mode=1 \ #@cli : $ sample mandrill _fx_stylize themandola _output_mode=1 \
# +fx_stylize 1,5,0,0,0,3,1,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,10,2,1.85,0 _la bel="from~Braque:~The~Mandola" # +fx_stylize 1,5,0,0,0,3,1,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,10,2,1.85,0 _la bel="from~Braque:~The~Mandola"
#@cli : $ sample square _fx_stylize orientalpleasuregardenanagoria _output_mode= 1 \ #@cli : $ sample square _fx_stylize orientalpleasuregardenanagoria _output_mode= 1 \
# +fx_stylize 1,6,0,0,0.52,0.5,3,0.14,0.1,2,5,0,0.7,3.39,0,1,0,5,5,7,5,30,40,2,1 .85,0 \ # +fx_stylize 1,6,0,0,0.52,0.5,3,0.14,0.1,3,3,0,0.7,3.39,0,1,0,5,5,7,5,30,40,2,1 .85,0 \
# _label="from~Klee:~Oriental~Pleasure~Garden~Anagoria" # _label="from~Klee:~Oriental~Pleasure~Garden~Anagoria"
#@cli : $ sample monalisa _fx_stylize squareswithconcentriccircles _output_mode= 1 \ #@cli : $ sample monalisa _fx_stylize squareswithconcentriccircles _output_mode= 1 \
# +fx_stylize 1,4,0,0,0.15,3,2,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,10,2,1.85,0 \ # +fx_stylize 1,4,0,0,0.15,3,2,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,10,2,1.85,0 \
# _label="from~Kandisnky:~Squares~with~Concentric~Circles" # _label="from~Kandisnky:~Squares~with~Concentric~Circles"
#@cli : $ sample monalisa _fx_stylize inthestyleofkairouan _output_mode=1 \ #@cli : $ sample monalisa _fx_stylize inthestyleofkairouan _output_mode=1 \
# +fx_stylize 1,4,2,0,0.15,3,2,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,50,2,1.85,0 \ # +fx_stylize 1,4,2,0,0.15,3,2,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,50,2,1.85,0 \
# _label="from~Klee:~In~the~Style~of~Kairouan" # _label="from~Klee:~In~the~Style~of~Kairouan"
#@cli : $ sample square _fx_stylize polyphony2 _output_mode=1 \ #@cli : $ sample square _fx_stylize polyphony2 _output_mode=1 \
# +fx_stylize 1,6,0,0,0.15,3,2,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,10,2,1.85,0 _label="from~Klee:~Polyphony~2" # +fx_stylize 1,6,0,0,0.15,3,2,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,10,2,1.85,0 _label="from~Klee:~Polyphony~2"
#@cli : $ sample square _fx_stylize wheatstacksendofsummer _output_mode=1 \ #@cli : $ sample square _fx_stylize wheatstacksendofsummer _output_mode=1 \
# +fx_stylize 1,6,0,0,0.15,3,2,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,10,2,1.85,0 \ # +fx_stylize 1,6,0,0,0.15,3,2,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,10,2,1.85,0 \
# _label="from~Monet:~Wheatstacks~-~End~of~Summer" # _label="from~Monet:~Wheatstacks~-~End~of~Summer"
#@cli : $ sample square _fx_stylize portraitdemetzinger _output_mode=1 \ #@cli : $ sample square _fx_stylize portraitdemetzinger _output_mode=1 \
# +fx_stylize 1,5,0,0,0.1,2,3,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,500,2,1.85,0 \ # +fx_stylize 1,5,0,0,0.1,2,3,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,500,2,1.85,0 \
# _label="from~Delaunay:~Portrait~de~Metzinger" # _label="from~Delaunay:~Portrait~de~Metzinger"
#@cli : $ sample monalisa input ../img/mandelbrot.jpg _output_mode=1 \ #@cli : $ sample monalisa input ../img/mandelbrot.jpg _output_mode=1 \
# +fx_stylize 1,3,3,0,0.15,4,3,0.5,0.1,0,5,0,0.7,1,0,1,0,5,5,7,1,30,50,2,1.85,0 _label="from~Mandelbrot~Fractal~Set" # +fx_stylize 1,3,3,0,0.15,4,3,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,50,2,1.85,0 _label="from~Mandelbrot~Fractal~Set"
#@cli : $ sample bottles _fx_stylize redtree _output_mode=1 \ #@cli : $ sample bottles _fx_stylize redtree _output_mode=1 \
# +fx_stylize 1,5,0,0,2.12,2,3,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,5,2,1.85,0 \ # +fx_stylize 1,5,0,0,2.12,2,3,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,5,2,1.85,0 \
# _label="from~Mondrian:~Evening;~Red~Tree" # _label="from~Mondrian:~Evening;~Red~Tree"
#@cli : $ sample bottles _fx_stylize redwaistcoat _output_mode=1 \ #@cli : $ sample bottles _fx_stylize redwaistcoat _output_mode=1 \
# +fx_stylize 1,4,0,0,0.67,3.17,3,0.5,0.06,2,1,0,0.7,5,0,2,0,5,5,7,1,30,0,2.05,1 .85,0 \ # +fx_stylize 1,4,0,0,0.67,3.17,3,0.5,0.06,3,3,0,0.7,5,0,2,0,5,5,7,1,30,0,2.05,1 .85,0 \
# _label="from~Klee:~Red~Waistcoat" # _label="from~Klee:~Red~Waistcoat"
#@cli : $ sample bottles _fx_stylize reservoirhortadeebro _output_mode=1 \ #@cli : $ sample bottles _fx_stylize reservoirhortadeebro _output_mode=1 \
# +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,10,2,1.85,0 _ label="from~Picasso:~The~Reservoir" # +fx_stylize 1,6,0,0,0.5,2,3,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,10,2,1.85,0 _ label="from~Picasso:~The~Reservoir"
#@cli : $ sample bottles _fx_stylize almondblossom _output_mode=1 \ #@cli : $ sample bottles _fx_stylize almondblossom _output_mode=1 \
# +fx_stylize 1,6,0,0,0,3,3,0.5,0.1,2,5,0,0.7,5,0,2,0,5,5,7,1,30,10,2,1.85,0 _la bel="from~Van~Gogh:~Almond~Blossom" # +fx_stylize 1,6,0,0,0,3,3,0.5,0.1,3,3,0,0.7,5,0,2,0,5,5,7,1,30,10,2,1.85,0 _la bel="from~Van~Gogh:~Almond~Blossom"
#@cli : $ sample bottles _fx_stylize landscapenearantwerp _output_mode=1 \ #@cli : $ sample bottles _fx_stylize landscapenearantwerp _output_mode=1 \
# +fx_stylize 1,6,0,0,2.17,3.65,3,0.5,0.1,2,5,0,0.7,1,0,1,0,5,5,7,1,30,10,2,1.85 ,0 \ # +fx_stylize 1,6,0,0,2.17,3.65,3,0.5,0.1,3,3,0,0.7,1,0,1,0,5,5,7,1,30,10,2,1.85 ,0 \
# _label="from~Braque:~Landscape~near~Antwerp" # _label="from~Braque:~Landscape~near~Antwerp"
#@cli : $ sample bottles _fx_stylize wheatfieldwithcrows _output_mode=1 \ #@cli : $ sample bottles _fx_stylize wheatfieldwithcrows _output_mode=1 \
# +fx_stylize 1,6,0,0,3.86,2,3,0.5,0.1,1,5,0,0.7,3.35,1,1,0,5,5,7,1,30,10,5,1.85 ,0 \ # +fx_stylize 1,6,0,0,3.86,2,3,0.5,0.1,3,3,0,0.7,3.35,1,1,0,5,5,7,1,30,10,5,1.85 ,0 \
# _label="from~Van~Gogh:~Wheat~Field~with~Crows" # _label="from~Van~Gogh:~Wheat~Field~with~Crows"
#@cli gallery_codesamples #@cli gallery_codesamples
#@cli : This entry defines some examples of coding-fun filters for the G'MIC gal lery page. #@cli : This entry defines some examples of coding-fun filters for the G'MIC gal lery page.
#@cli : $ https://gmic.eu/samples/lissajous.gmic go _fps=10 _label="Lissajous" #@cli : $ https://gmic.eu/samples/lissajous.gmic go _fps=10 _label="Lissajous"
#@cli : $ https://gmic.eu/samples/torus3d.gmic go _fps=10 _label="3D~torus" #@cli : $ https://gmic.eu/samples/torus3d.gmic go _fps=10 _label="3D~torus"
#@cli : $ https://gmic.eu/samples/pacman.gmic go _fps=25 _label="Pacman" #@cli : $ https://gmic.eu/samples/pacman.gmic go _fps=25 _label="Pacman"
#@cli : $ https://gmic.eu/samples/scrolling.gmic go _fps=25 _label="Scrolling" #@cli : $ https://gmic.eu/samples/scrolling.gmic go _fps=25 _label="Scrolling"
#@cli : $ https://gmic.eu/samples/landscape.gmic go _fps=12 _label="Landscape" #@cli : $ https://gmic.eu/samples/landscape.gmic go _fps=12 _label="Landscape"
#@cli : $ https://gmic.eu/samples/mandelbrot.gmic go _fps=8 _label="Mandelbrot" #@cli : $ https://gmic.eu/samples/mandelbrot.gmic go _fps=8 _label="Mandelbrot"
 End of changes. 149 change blocks. 
452 lines changed or deleted 1762 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)