diff --git a/README.md b/README.md index 3ea6787..a71915e 100644 --- a/README.md +++ b/README.md @@ -36,11 +36,13 @@ Older versions and unstable nightly build are also available at +License: CC0-1.0 + +Files: tanda/* +Copyright: Author: Marcelo "Tanda" Cerviño +License: CC0-1.0 + +Files: deevad/* +Copyright: Author: David Revoy +License: CC0-1.0 + +Files: kaerhon_v1/* +Copyright: Author: Guillaume Loussarévian +License: CC0-1.0 + +See also CC0-1.0 license at creativecommons.org +https://creativecommons.org/publicdomain/zero/1.0/ \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/blend+paint.myb b/stuff/library/mypaint brushes/classic/blend+paint.myb new file mode 100644 index 0000000..b6ce32f --- /dev/null +++ b/stuff/library/mypaint brushes/classic/blend+paint.myb @@ -0,0 +1,199 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 54.45, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.69, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.85, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.222222, + 0.0 + ], + [ + 0.324074, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.6, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.9, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.12, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/blend+paint_prev.png b/stuff/library/mypaint brushes/classic/blend+paint_prev.png new file mode 100644 index 0000000..309433a Binary files /dev/null and b/stuff/library/mypaint brushes/classic/blend+paint_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/blending_knife.myb b/stuff/library/mypaint brushes/classic/blending_knife.myb new file mode 100644 index 0000000..141b6a1 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/blending_knife.myb @@ -0,0 +1,263 @@ +{ + "comment": "MyPaint brush file", + "group": "oil", + "parent_brush_name": "classic/blending_knife", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.51, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.44, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "tilt_ascension": [ + [ + -180.0, + -180.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 5.02, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.9, + "inputs": { + "speed1": [ + [ + 0.0, + 0.028571 + ], + [ + 4.0, + -0.2 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 1.04, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.046296, + 0.71875 + ], + [ + 0.154321, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.1, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.15, + "inputs": { + "pressure": [ + [ + 0.0, + 0.958333 + ], + [ + 1.0, + 2.0 + ] + ], + "speed1": [ + [ + 0.0, + -0.916667 + ], + [ + 3.7, + -2.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.21, + "inputs": { + "pressure": [ + [ + 0.0, + -0.326667 + ], + [ + 1.0, + 0.49 + ] + ], + "tilt_declination": [ + [ + 0.0, + 0.0 + ], + [ + 90.0, + 0.49 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 5.5, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/blending_knife_prev.png b/stuff/library/mypaint brushes/classic/blending_knife_prev.png new file mode 100644 index 0000000..bbaf671 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/blending_knife_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/blur.myb b/stuff/library/mypaint brushes/classic/blur.myb new file mode 100644 index 0000000..518ed4d --- /dev/null +++ b/stuff/library/mypaint brushes/classic/blur.myb @@ -0,0 +1,223 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/blur", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.6, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.4 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.7, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.4 + ] + ], + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.2 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.4, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.0, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": -6.69, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/blur_prev.png b/stuff/library/mypaint brushes/classic/blur_prev.png new file mode 100644 index 0000000..9fd4f31 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/blur_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/brush.myb b/stuff/library/mypaint brushes/classic/brush.myb new file mode 100644 index 0000000..f18af68 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/brush.myb @@ -0,0 +1,245 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/brush", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.82, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.51, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 70.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.89, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.989583 + ], + [ + 0.38253, + -0.59375 + ], + [ + 0.656627, + 0.041667 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.44, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.01, + "inputs": { + "pressure": [ + [ + 0.0, + -1.86375 + ], + [ + 0.237952, + -1.42 + ], + [ + 0.5, + -0.355 + ], + [ + 0.76506, + 1.42 + ], + [ + 1.0, + 2.13 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 4.47, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 2.48, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/brush_prev.png b/stuff/library/mypaint brushes/classic/brush_prev.png new file mode 100644 index 0000000..e81c052 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/brush_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/bulk.myb b/stuff/library/mypaint brushes/classic/bulk.myb new file mode 100644 index 0000000..7db1a63 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/bulk.myb @@ -0,0 +1,210 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/bulk", + "settings": { + "anti_aliasing": { + "base_value": 1.37, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.19, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.38, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.052469, + 0.625 + ], + [ + 0.166667, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.59, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/bulk_prev.png b/stuff/library/mypaint brushes/classic/bulk_prev.png new file mode 100644 index 0000000..391cef6 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/bulk_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/calligraphy.myb b/stuff/library/mypaint brushes/classic/calligraphy.myb new file mode 100644 index 0000000..3cd1441 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/calligraphy.myb @@ -0,0 +1,241 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/calligraphy", + "settings": { + "anti_aliasing": { + "base_value": 3.53, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 45.92, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 5.46, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.74, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.05 + ] + ], + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -0.09 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.015, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.02, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.5 + ] + ], + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -0.21 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.65, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.8, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/calligraphy_prev.png b/stuff/library/mypaint brushes/classic/calligraphy_prev.png new file mode 100644 index 0000000..49c4e3e Binary files /dev/null and b/stuff/library/mypaint brushes/classic/calligraphy_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/charcoal.myb b/stuff/library/mypaint brushes/classic/charcoal.myb new file mode 100644 index 0000000..f4d9df8 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/charcoal.myb @@ -0,0 +1,213 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.6354166666666666, + "inputs": {} + }, + "color_s": { + "base_value": 0.8807339449541285, + "inputs": {} + }, + "color_v": { + "base_value": 0.42745098039215684, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.2, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 1.6, + "inputs": { + "pressure": [ + [ + 0, + 0 + ], + [ + 1.0, + -1.4 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.4, + "inputs": { + "pressure": [ + [ + 0, + 0 + ], + [ + 1.0, + 0.4 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0, + 0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.7, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/charcoal_prev.png b/stuff/library/mypaint brushes/classic/charcoal_prev.png new file mode 100644 index 0000000..24a020f Binary files /dev/null and b/stuff/library/mypaint brushes/classic/charcoal_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/coarse_bulk_1.myb b/stuff/library/mypaint brushes/classic/coarse_bulk_1.myb new file mode 100644 index 0000000..ebf414e --- /dev/null +++ b/stuff/library/mypaint brushes/classic/coarse_bulk_1.myb @@ -0,0 +1,191 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/coarse_bulk_1", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 50.42, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.52, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 10.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.66, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.59, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 1.5, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.95, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/coarse_bulk_1_prev.png b/stuff/library/mypaint brushes/classic/coarse_bulk_1_prev.png new file mode 100644 index 0000000..85b0e09 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/coarse_bulk_1_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/coarse_bulk_2.myb b/stuff/library/mypaint brushes/classic/coarse_bulk_2.myb new file mode 100644 index 0000000..7c00b33 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/coarse_bulk_2.myb @@ -0,0 +1,202 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/coarse_bulk_2", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 2.6, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.59, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 10.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.66, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.99, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.55, + "inputs": { + "random": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.95 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/coarse_bulk_2_prev.png b/stuff/library/mypaint brushes/classic/coarse_bulk_2_prev.png new file mode 100644 index 0000000..e410a1a Binary files /dev/null and b/stuff/library/mypaint brushes/classic/coarse_bulk_2_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/coarse_bulk_3.myb b/stuff/library/mypaint brushes/classic/coarse_bulk_3.myb new file mode 100644 index 0000000..9e8f6c1 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/coarse_bulk_3.myb @@ -0,0 +1,191 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/coarse_bulk_3", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 3.32, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 15.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.45, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 1.09, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.63, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.5, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/coarse_bulk_3_prev.png b/stuff/library/mypaint brushes/classic/coarse_bulk_3_prev.png new file mode 100644 index 0000000..da2acf0 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/coarse_bulk_3_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/dry_brush.myb b/stuff/library/mypaint brushes/classic/dry_brush.myb new file mode 100644 index 0000000..c3dd829 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/dry_brush.myb @@ -0,0 +1,224 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.2, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.4 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.8, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.2 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.1, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.6, + "inputs": { + "speed2": [ + [ + 0.0, + 0.042857 + ], + [ + 4.0, + -0.3 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/dry_brush_prev.png b/stuff/library/mypaint brushes/classic/dry_brush_prev.png new file mode 100644 index 0000000..c554a3a Binary files /dev/null and b/stuff/library/mypaint brushes/classic/dry_brush_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/imp_blending.myb b/stuff/library/mypaint brushes/classic/imp_blending.myb new file mode 100644 index 0000000..16aa0bb --- /dev/null +++ b/stuff/library/mypaint brushes/classic/imp_blending.myb @@ -0,0 +1,359 @@ +{ + "comment": "MyPaint brush file", + "group": "smudge", + "parent_brush_name": "classic/imp_blending", + "settings": { + "anti_aliasing": { + "base_value": 0.64, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": { + "custom": [ + [ + -2.0, + -0.04 + ], + [ + 2.0, + 0.04 + ] + ] + } + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.87963, + 0.02 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -10.0 + ], + [ + 1.0, + 10.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": { + "tilt_declination": [ + [ + 0.0, + 4.41 + ], + [ + 90.0, + 0.0 + ] + ] + } + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 7.1, + "inputs": { + "speed1": [ + [ + 0.0, + -0.668571 + ], + [ + 4.0, + 4.68 + ] + ], + "stroke": [ + [ + 0.0, + -0.4 + ], + [ + 1.0, + 0.4 + ] + ], + "tilt_declination": [ + [ + 0.0, + 3.636875 + ], + [ + 90.0, + -7.59 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.6, + "inputs": { + "tilt_declination": [ + [ + 0.0, + 0.0 + ], + [ + 45.0, + 0.0 + ], + [ + 90.0, + 0.63 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.166667, + 0.75 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.067901, + 0.78125 + ], + [ + 0.185185, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.0, + "inputs": { + "pressure": [ + [ + 0.0, + -2.0 + ], + [ + 0.401235, + 0.0 + ], + [ + 1.0, + 0.0 + ] + ], + "tilt_declination": [ + [ + 0.0, + 0.0 + ], + [ + 45.0, + 0.0 + ], + [ + 90.0, + -1.6 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 6.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.2, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/imp_blending_prev.png b/stuff/library/mypaint brushes/classic/imp_blending_prev.png new file mode 100644 index 0000000..6f39b81 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/imp_blending_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/imp_details.myb b/stuff/library/mypaint brushes/classic/imp_details.myb new file mode 100644 index 0000000..aaf3a1f --- /dev/null +++ b/stuff/library/mypaint brushes/classic/imp_details.myb @@ -0,0 +1,398 @@ +{ + "comment": "MyPaint brush file", + "group": "impressionism", + "parent_brush_name": "classic/imp_details", + "settings": { + "anti_aliasing": { + "base_value": 0.48, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": { + "custom": [ + [ + -2.0, + -0.02 + ], + [ + 2.0, + 0.02 + ] + ] + } + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.87963, + 0.02 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -10.0 + ], + [ + 1.0, + 10.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": { + "tilt_declination": [ + [ + 0.0, + 4.41 + ], + [ + 90.0, + 0.0 + ] + ] + } + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 7.1, + "inputs": { + "speed1": [ + [ + 0.0, + -0.668571 + ], + [ + 4.0, + 4.68 + ] + ], + "stroke": [ + [ + 0.0, + -0.4 + ], + [ + 1.0, + 0.4 + ] + ], + "tilt_declination": [ + [ + 0.0, + 3.636875 + ], + [ + 90.0, + -7.59 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.09, + "inputs": { + "pressure": [ + [ + 0.0, + -0.653333 + ], + [ + 0.379268, + -0.459375 + ], + [ + 0.747561, + 0.18375 + ], + [ + 1.0, + 0.98 + ] + ], + "tilt_declination": [ + [ + 0.0, + 0.0 + ], + [ + 45.0, + 0.0 + ], + [ + 90.0, + 0.63 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.166667, + 0.75 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.067901, + 0.78125 + ], + [ + 0.185185, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.0, + "inputs": { + "pressure": [ + [ + 0.0, + -2.0 + ], + [ + 0.401235, + 0.0 + ], + [ + 1.0, + 0.0 + ] + ], + "tilt_declination": [ + [ + 0.0, + 0.0 + ], + [ + 45.0, + 0.0 + ], + [ + 90.0, + -1.6 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.9, + "inputs": { + "pressure": [ + [ + 0.0, + 0.510417 + ], + [ + 1.0, + -1.0 + ] + ], + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 6.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.2, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/imp_details_prev.png b/stuff/library/mypaint brushes/classic/imp_details_prev.png new file mode 100644 index 0000000..89453b3 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/imp_details_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/impressionism.myb b/stuff/library/mypaint brushes/classic/impressionism.myb new file mode 100644 index 0000000..68f16e3 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/impressionism.myb @@ -0,0 +1,380 @@ +{ + "comment": "MyPaint brush file", + "group": "impressionism", + "parent_brush_name": "classic/impressionism", + "settings": { + "anti_aliasing": { + "base_value": 0.66, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": { + "custom": [ + [ + -2.0, + -0.04 + ], + [ + 2.0, + 0.04 + ] + ] + } + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.87963, + 0.02 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -10.0 + ], + [ + 1.0, + 10.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": { + "tilt_declination": [ + [ + 0.0, + 4.41 + ], + [ + 90.0, + 0.0 + ] + ] + } + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 7.1, + "inputs": { + "speed1": [ + [ + 0.0, + -0.668571 + ], + [ + 4.0, + 4.68 + ] + ], + "stroke": [ + [ + 0.0, + -0.4 + ], + [ + 1.0, + 0.4 + ] + ], + "tilt_declination": [ + [ + 0.0, + 3.636875 + ], + [ + 90.0, + -7.59 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.6, + "inputs": { + "tilt_declination": [ + [ + 0.0, + 0.0 + ], + [ + 45.0, + 0.0 + ], + [ + 90.0, + 0.63 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.166667, + 0.75 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.067901, + 0.78125 + ], + [ + 0.185185, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.0, + "inputs": { + "pressure": [ + [ + 0.0, + -2.0 + ], + [ + 0.401235, + 0.0 + ], + [ + 1.0, + 0.0 + ] + ], + "tilt_declination": [ + [ + 0.0, + 0.0 + ], + [ + 45.0, + 0.0 + ], + [ + 90.0, + -1.6 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.9, + "inputs": { + "pressure": [ + [ + 0.0, + 0.510417 + ], + [ + 1.0, + -1.0 + ] + ], + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 6.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.2, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/impressionism_prev.png b/stuff/library/mypaint brushes/classic/impressionism_prev.png new file mode 100644 index 0000000..e4d9fa1 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/impressionism_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/ink_blot.myb b/stuff/library/mypaint brushes/classic/ink_blot.myb new file mode 100644 index 0000000..aa84316 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/ink_blot.myb @@ -0,0 +1,191 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/ink_blot", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 3.32, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 15.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.28, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.17, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.13, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.63, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.5, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/ink_blot_prev.png b/stuff/library/mypaint brushes/classic/ink_blot_prev.png new file mode 100644 index 0000000..5f8f68c Binary files /dev/null and b/stuff/library/mypaint brushes/classic/ink_blot_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/ink_eraser.myb b/stuff/library/mypaint brushes/classic/ink_eraser.myb new file mode 100644 index 0000000..e8527ba --- /dev/null +++ b/stuff/library/mypaint brushes/classic/ink_eraser.myb @@ -0,0 +1,241 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 1.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.05 + ] + ], + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -0.09 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.025, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.16, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.5 + ] + ], + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -0.21 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.65, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.8, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/ink_eraser_prev.png b/stuff/library/mypaint brushes/classic/ink_eraser_prev.png new file mode 100644 index 0000000..1325e99 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/ink_eraser_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/kabura.myb b/stuff/library/mypaint brushes/classic/kabura.myb new file mode 100644 index 0000000..499f273 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/kabura.myb @@ -0,0 +1,266 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/kabura", + "settings": { + "anti_aliasing": { + "base_value": 0.93, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 3.24, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 48.87, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.43, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.29, + "inputs": { + "pressure": [ + [ + 0.0, + -0.989583 + ], + [ + 0.38253, + -0.59375 + ], + [ + 0.656627, + 0.041667 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.29, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.92, + "inputs": { + "pressure": [ + [ + 0.0, + -0.7875 + ], + [ + 0.237952, + -0.6 + ], + [ + 0.5, + -0.15 + ], + [ + 0.76506, + 0.6 + ], + [ + 1.0, + 0.9 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 10.0, + "inputs": { + "speed1": [ + [ + 0.0, + -1.428571 + ], + [ + 4.0, + 10.0 + ] + ], + "speed2": [ + [ + 0.0, + -1.428571 + ], + [ + 4.0, + 10.0 + ] + ] + } + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/kabura_prev.png b/stuff/library/mypaint brushes/classic/kabura_prev.png new file mode 100644 index 0000000..17335f9 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/kabura_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/knife.myb b/stuff/library/mypaint brushes/classic/knife.myb new file mode 100644 index 0000000..126e25a --- /dev/null +++ b/stuff/library/mypaint brushes/classic/knife.myb @@ -0,0 +1,202 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/knife", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.75, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.99, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 6.52, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.9, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.26, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/knife_prev.png b/stuff/library/mypaint brushes/classic/knife_prev.png new file mode 100644 index 0000000..535976c Binary files /dev/null and b/stuff/library/mypaint brushes/classic/knife_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/long_grass.myb b/stuff/library/mypaint brushes/classic/long_grass.myb new file mode 100644 index 0000000..d492355 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/long_grass.myb @@ -0,0 +1,358 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/long_grass", + "settings": { + "anti_aliasing": { + "base_value": 5.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -0.05 + ], + [ + 1.0, + 0.05 + ] + ], + "stroke": [ + [ + 0.0, + -0.004687 + ], + [ + 1.0, + 0.004792 + ] + ] + } + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -0.01 + ], + [ + 1.0, + 0.01 + ] + ] + } + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.173333 + ], + [ + 1.0, + 0.26 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -0.09 + ], + [ + 1.0, + 0.09 + ] + ], + "stroke": [ + [ + 0.0, + -0.13 + ], + [ + 0.5, + 0.13 + ], + [ + 1.0, + -0.128646 + ] + ] + } + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 1.06, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 24.08, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 78.896104, + 21.41 + ], + [ + 102.272727, + -21.41 + ], + [ + 180.0, + 0.0 + ] + ], + "random": [ + [ + 0.0, + -13.31 + ], + [ + 0.11039, + -1.525104 + ], + [ + 0.899351, + 1.66375 + ], + [ + 1.0, + 13.31 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 3.81, + "inputs": { + "random": [ + [ + 0.0, + 2.575 + ], + [ + 0.092593, + 4.345313 + ], + [ + 1.0, + 5.15 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 1.74, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -1.78 + ] + ], + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 4.0, + 0.2 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.1, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.4 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.83, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.083333, + 0.68 + ], + [ + 1.0, + 0.68 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.8, + "inputs": { + "random": [ + [ + 0.0, + -0.11 + ], + [ + 1.0, + 0.11 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.2, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 5.96, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/long_grass_prev.png b/stuff/library/mypaint brushes/classic/long_grass_prev.png new file mode 100644 index 0000000..cd5a4a3 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/long_grass_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/marker_fat.myb b/stuff/library/mypaint brushes/classic/marker_fat.myb new file mode 100644 index 0000000..509c7c2 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/marker_fat.myb @@ -0,0 +1,236 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/marker_fat", + "settings": { + "anti_aliasing": { + "base_value": 0.78, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 1.5, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 113.08, + "inputs": { + "tilt_ascension": [ + [ + -180.0, + -180.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 10.0, + "inputs": { + "tilt_declination": [ + [ + 0.0, + -0.0 + ], + [ + 68.042169, + -9.0 + ], + [ + 90.0, + -9.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.060241, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.48, + "inputs": { + "tilt_declination": [ + [ + 20.0, + -0.0 + ], + [ + 50.0, + -0.0 + ], + [ + 80.0, + -1.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 3.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/marker_fat_prev.png b/stuff/library/mypaint brushes/classic/marker_fat_prev.png new file mode 100644 index 0000000..5d99b17 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/marker_fat_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/marker_small.myb b/stuff/library/mypaint brushes/classic/marker_small.myb new file mode 100644 index 0000000..281d2c4 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/marker_small.myb @@ -0,0 +1,236 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/marker_small", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 113.08, + "inputs": { + "tilt_ascension": [ + [ + -180.0, + -180.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 8.0, + "inputs": { + "tilt_declination": [ + [ + 0.0, + -0.0 + ], + [ + 68.042169, + -9.0 + ], + [ + 90.0, + -9.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.060241, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.0, + "inputs": { + "tilt_declination": [ + [ + 20.0, + -0.0 + ], + [ + 50.0, + -0.0 + ], + [ + 80.0, + -0.8 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 3.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/marker_small_prev.png b/stuff/library/mypaint brushes/classic/marker_small_prev.png new file mode 100644 index 0000000..3834028 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/marker_small_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/modelling.myb b/stuff/library/mypaint brushes/classic/modelling.myb new file mode 100644 index 0000000..348f93e --- /dev/null +++ b/stuff/library/mypaint brushes/classic/modelling.myb @@ -0,0 +1,260 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/modelling", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 4.02, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.71, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.8, + "inputs": { + "speed2": [ + [ + 0.0, + 0.28 + ], + [ + 0.518519, + 0.032083 + ], + [ + 1.888889, + -0.16625 + ], + [ + 4.0, + -0.28 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.52 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.1, + "inputs": { + "pressure": [ + [ + 0.0, + 0.326667 + ], + [ + 1.0, + -0.49 + ] + ], + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.75 + ] + ], + "speed2": [ + [ + 0.0, + -0.15 + ], + [ + 4.0, + 1.05 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.25, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 0.290123, + -0.0375 + ], + [ + 0.645062, + -0.15 + ], + [ + 1.0, + -0.4 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.3, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 1.24, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.1, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.61, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/modelling2.myb b/stuff/library/mypaint brushes/classic/modelling2.myb new file mode 100644 index 0000000..3e08e75 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/modelling2.myb @@ -0,0 +1,373 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.1836514917, + "inputs": {} + }, + "color_s": { + "base_value": 0.721940404399, + "inputs": {} + }, + "color_v": { + "base_value": 0.860303654536, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 3.67, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.79, + "inputs": { + "pressure": [ + [ + 0.0, + -0.25 + ], + [ + 0.133929, + -0.195312 + ], + [ + 0.223214, + -0.109375 + ], + [ + 0.342262, + -0.028646 + ], + [ + 0.5, + 0.0 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + 0.0 + ], + [ + 0.164336, + 0.0 + ], + [ + 0.213287, + 0.19 + ], + [ + 0.265734, + 0.0 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.43, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.78 + ], + [ + 0.02381, + 0.0 + ], + [ + 0.061728, + 0.2275 + ], + [ + 0.732143, + 0.706875 + ], + [ + 1.0, + 0.78 + ] + ], + "speed1": [ + [ + 0.0, + -0.27 + ], + [ + 3.0, + -0.2475 + ] + ], + "speed2": [ + [ + 0.0, + -0.37 + ], + [ + 0.357143, + -0.23125 + ], + [ + 0.845238, + -0.131042 + ], + [ + 1.77381, + -0.034687 + ], + [ + 2.77381, + 0.0 + ], + [ + 4.0, + 0.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.2, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.404321, + -0.0875 + ], + [ + 1.0, + -0.42 + ] + ], + "speed1": [ + [ + 0.0, + -0.201429 + ], + [ + 4.0, + 1.41 + ] + ], + "speed2": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.42 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.53, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 0.299383, + -0.0125 + ], + [ + 0.5, + -0.0375 + ], + [ + 0.790123, + -0.110417 + ], + [ + 1.0, + -0.2 + ] + ], + "stroke": [ + [ + 0.0, + -0.65 + ], + [ + 0.132716, + -0.561979 + ], + [ + 0.358025, + -0.473958 + ], + [ + 0.648148, + -0.24375 + ], + [ + 0.87037, + 0.067708 + ], + [ + 1.0, + 0.446875 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.63, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 0.98, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 5.22, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/modelling2_prev.png b/stuff/library/mypaint brushes/classic/modelling2_prev.png new file mode 100644 index 0000000..179c84d Binary files /dev/null and b/stuff/library/mypaint brushes/classic/modelling2_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/modelling_prev.png b/stuff/library/mypaint brushes/classic/modelling_prev.png new file mode 100644 index 0000000..5ec6c93 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/modelling_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/pen.myb b/stuff/library/mypaint brushes/classic/pen.myb new file mode 100644 index 0000000..6057896 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/pen.myb @@ -0,0 +1,241 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/pen", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.9, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.05 + ] + ], + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -0.09 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.015, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.96, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.5 + ] + ], + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -0.21 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.65, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.8, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/pen_prev.png b/stuff/library/mypaint brushes/classic/pen_prev.png new file mode 100644 index 0000000..b87e248 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/pen_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/pencil.myb b/stuff/library/mypaint brushes/classic/pencil.myb new file mode 100644 index 0000000..2878434 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/pencil.myb @@ -0,0 +1,213 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/pencil", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 4.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.1, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.3 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.7, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.2, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 1.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/pencil_prev.png b/stuff/library/mypaint brushes/classic/pencil_prev.png new file mode 100644 index 0000000..6e618eb Binary files /dev/null and b/stuff/library/mypaint brushes/classic/pencil_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/pointy_ink.myb b/stuff/library/mypaint brushes/classic/pointy_ink.myb new file mode 100644 index 0000000..d6e77be --- /dev/null +++ b/stuff/library/mypaint brushes/classic/pointy_ink.myb @@ -0,0 +1,267 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/pointy_ink", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.65 + ] + ], + "speed1": [ + [ + 0.0, + 0.064687 + ], + [ + 1.0, + -0.09 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.015, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.96, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 3.36 + ] + ], + "speed1": [ + [ + 0.0, + 0.14875 + ], + [ + 1.0, + -0.21 + ] + ], + "stroke": [ + [ + 0.0, + -0.62 + ], + [ + 0.157407, + -0.393958 + ], + [ + 0.29321, + -0.238958 + ], + [ + 0.5, + -0.148542 + ], + [ + 0.700617, + -0.064583 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 1.18, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/pointy_ink_prev.png b/stuff/library/mypaint brushes/classic/pointy_ink_prev.png new file mode 100644 index 0000000..1b0aafa Binary files /dev/null and b/stuff/library/mypaint brushes/classic/pointy_ink_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/puantilism.myb b/stuff/library/mypaint brushes/classic/puantilism.myb new file mode 100644 index 0000000..dd6db48 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/puantilism.myb @@ -0,0 +1,346 @@ +{ + "comment": "MyPaint brush file", + "group": "oil", + "parent_brush_name": "classic/puantilism", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": { + "custom": [ + [ + -2.0, + -0.04 + ], + [ + 2.0, + 0.04 + ] + ] + } + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.87963, + 0.02 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -10.0 + ], + [ + 1.0, + 10.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": { + "tilt_declination": [ + [ + 0.0, + 4.41 + ], + [ + 90.0, + 0.0 + ] + ] + } + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": { + "tilt_declination": [ + [ + 0.0, + 6.11 + ], + [ + 90.0, + 0.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 2.0, + "inputs": { + "tilt_declination": [ + [ + 0.0, + -0.0 + ], + [ + 45.0, + -0.0 + ], + [ + 90.0, + -0.83 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.166667, + 0.75 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.067901, + 0.78125 + ], + [ + 0.185185, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.42, + "inputs": { + "pressure": [ + [ + 0.0, + -2.0 + ], + [ + 0.401235, + 0.0 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.9, + "inputs": { + "pressure": [ + [ + 0.0, + 0.510417 + ], + [ + 1.0, + -1.0 + ] + ], + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 6.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.2, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/puantilism2.myb b/stuff/library/mypaint brushes/classic/puantilism2.myb new file mode 100644 index 0000000..5fc0029 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/puantilism2.myb @@ -0,0 +1,382 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/puantilism2", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": { + "custom": [ + [ + -2.0, + -0.04 + ], + [ + 2.0, + 0.04 + ] + ] + } + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -0.21 + ], + [ + 1.0, + 0.21 + ] + ] + } + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.87963, + 0.02 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -0.1 + ], + [ + 1.0, + 0.1 + ] + ] + } + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -10.0 + ], + [ + 1.0, + 10.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": { + "tilt_declination": [ + [ + 0.0, + 4.41 + ], + [ + 90.0, + 0.0 + ] + ] + } + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "tilt_ascension": [ + [ + -180.0, + -180.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": { + "tilt_declination": [ + [ + 0.0, + 4.6 + ], + [ + 90.0, + -0.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 1.06, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.57561, + 0.428958 + ], + [ + 1.0, + 1.42 + ] + ], + "tilt_declination": [ + [ + 0.0, + -0.0 + ], + [ + 45.0, + -0.0 + ], + [ + 90.0, + -0.83 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.166667, + 0.75 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.067901, + 0.78125 + ], + [ + 0.185185, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.02, + "inputs": { + "pressure": [ + [ + 0.0, + -2.0 + ], + [ + 0.401235, + 0.0 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.9, + "inputs": { + "pressure": [ + [ + 0.0, + 0.510417 + ], + [ + 1.0, + -1.0 + ] + ], + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 6.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.2, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/puantilism2_prev.png b/stuff/library/mypaint brushes/classic/puantilism2_prev.png new file mode 100644 index 0000000..399c093 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/puantilism2_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/puantilism_prev.png b/stuff/library/mypaint brushes/classic/puantilism_prev.png new file mode 100644 index 0000000..306b4dd Binary files /dev/null and b/stuff/library/mypaint brushes/classic/puantilism_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/rounded.myb b/stuff/library/mypaint brushes/classic/rounded.myb new file mode 100644 index 0000000..5295d7e --- /dev/null +++ b/stuff/library/mypaint brushes/classic/rounded.myb @@ -0,0 +1,221 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.116482286819, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 1.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 167.14, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": { + "custom": [ + [ + -2.0, + 0.0 + ], + [ + -0.703704, + 0.007292 + ], + [ + 0.469136, + 0.027083 + ], + [ + 2.0, + 0.1 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.69, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 2.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.3, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.08, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.06, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/rounded_prev.png b/stuff/library/mypaint brushes/classic/rounded_prev.png new file mode 100644 index 0000000..6c706a7 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/rounded_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/short_grass.myb b/stuff/library/mypaint brushes/classic/short_grass.myb new file mode 100644 index 0000000..1521fbe --- /dev/null +++ b/stuff/library/mypaint brushes/classic/short_grass.myb @@ -0,0 +1,289 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/short_grass", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -0.05 + ], + [ + 1.0, + 0.05 + ] + ], + "stroke": [ + [ + 0.0, + -0.004687 + ], + [ + 1.0, + 0.004792 + ] + ] + } + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -0.01 + ], + [ + 1.0, + 0.01 + ] + ] + } + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -0.28 + ], + [ + 1.0, + 0.28 + ] + ], + "stroke": [ + [ + 0.0, + -0.23 + ], + [ + 0.5, + 0.23 + ], + [ + 1.0, + -0.227604 + ] + ] + } + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 3.24, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -36.46 + ], + [ + 0.11039, + -4.177708 + ], + [ + 0.899351, + 4.5575 + ], + [ + 1.0, + 36.46 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 3.91, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.91, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 1.79, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -1.4 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.78, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.4 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.56, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.5, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 5.96, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/short_grass_prev.png b/stuff/library/mypaint brushes/classic/short_grass_prev.png new file mode 100644 index 0000000..181375d Binary files /dev/null and b/stuff/library/mypaint brushes/classic/short_grass_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/slow_ink.myb b/stuff/library/mypaint brushes/classic/slow_ink.myb new file mode 100644 index 0000000..7452fa8 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/slow_ink.myb @@ -0,0 +1,241 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/slow_ink", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.06 + ] + ], + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.1 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.191358, + 0.0 + ], + [ + 0.200617, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.37, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.5 + ] + ], + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.3 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 8.64, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 1.44, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.11, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/slow_ink_prev.png b/stuff/library/mypaint brushes/classic/slow_ink_prev.png new file mode 100644 index 0000000..29dbeb9 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/slow_ink_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/smudge+paint.myb b/stuff/library/mypaint brushes/classic/smudge+paint.myb new file mode 100644 index 0000000..bf747b6 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/smudge+paint.myb @@ -0,0 +1,263 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.66, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.32, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.4 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.64, + "inputs": { + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.2 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.077381, + 0.197917 + ], + [ + 0.229167, + 0.385417 + ], + [ + 0.589286, + 0.510417 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.2, + "inputs": { + "pressure": [ + [ + 0.0, + 0.4 + ], + [ + 1.0, + -0.6 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 1.0 + ], + [ + 0.219136, + 1.0 + ], + [ + 0.333333, + 0.895833 + ], + [ + 0.5, + 0.510417 + ], + [ + 0.759259, + 0.15625 + ], + [ + 1.0, + -0.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.28, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/smudge+paint_prev.png b/stuff/library/mypaint brushes/classic/smudge+paint_prev.png new file mode 100644 index 0000000..261ef9a Binary files /dev/null and b/stuff/library/mypaint brushes/classic/smudge+paint_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/smudge.myb b/stuff/library/mypaint brushes/classic/smudge.myb new file mode 100644 index 0000000..876fdd1 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/smudge.myb @@ -0,0 +1,213 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/smudge", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.2, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.4 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.2 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.6, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.35, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/smudge_prev.png b/stuff/library/mypaint brushes/classic/smudge_prev.png new file mode 100644 index 0000000..e9e08ee Binary files /dev/null and b/stuff/library/mypaint brushes/classic/smudge_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/textured_ink.myb b/stuff/library/mypaint brushes/classic/textured_ink.myb new file mode 100644 index 0000000..30588b5 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/textured_ink.myb @@ -0,0 +1,228 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/textured_ink", + "settings": { + "anti_aliasing": { + "base_value": 0.61, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.4 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.2 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.055556, + 0.895833 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.1, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.9, + "inputs": { + "speed2": [ + [ + 0.0, + 0.042857 + ], + [ + 4.0, + -0.3 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/textured_ink_prev.png b/stuff/library/mypaint brushes/classic/textured_ink_prev.png new file mode 100644 index 0000000..2affba5 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/textured_ink_prev.png differ diff --git a/stuff/library/mypaint brushes/classic/wet_knife.myb b/stuff/library/mypaint brushes/classic/wet_knife.myb new file mode 100644 index 0000000..dfafb98 --- /dev/null +++ b/stuff/library/mypaint brushes/classic/wet_knife.myb @@ -0,0 +1,221 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classic/wet_knife", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 0.71, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.75, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.99, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 6.52, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.117284, + 0.635417 + ], + [ + 0.330247, + 0.9375 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.3, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/classic/wet_knife_prev.png b/stuff/library/mypaint brushes/classic/wet_knife_prev.png new file mode 100644 index 0000000..2e3e641 Binary files /dev/null and b/stuff/library/mypaint brushes/classic/wet_knife_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/2B_pencil.myb b/stuff/library/mypaint brushes/deevad/2B_pencil.myb new file mode 100644 index 0000000..5743745 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/2B_pencil.myb @@ -0,0 +1,230 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A digital pencil soft 2B", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.02525252525252525, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 4.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.2, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.3 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.15000000000027122, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.75, + "inputs": { + "pressure": [ + [ + 0.0, + -0.687917 + ], + [ + 0.752976, + 0.236471 + ], + [ + 1.0, + 0.286632 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 1.03, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 1.5, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/2B_pencil_prev.png b/stuff/library/mypaint brushes/deevad/2B_pencil_prev.png new file mode 100644 index 0000000..73d3a99 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/2B_pencil_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/4H_pencil.myb b/stuff/library/mypaint brushes/deevad/4H_pencil.myb new file mode 100644 index 0000000..4020e5a --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/4H_pencil.myb @@ -0,0 +1,230 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A digital pencil hard 4H", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.370962081331, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 4.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.2, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.3 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.0257201646091, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.75, + "inputs": { + "pressure": [ + [ + 0.0, + -0.687917 + ], + [ + 0.752976, + 0.236471 + ], + [ + 1.0, + 0.286632 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/4H_pencil_prev.png b/stuff/library/mypaint brushes/deevad/4H_pencil_prev.png new file mode 100644 index 0000000..1a5b4e7 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/4H_pencil_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/airbrush.myb b/stuff/library/mypaint brushes/deevad/airbrush.myb new file mode 100644 index 0000000..cf2dc1e --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/airbrush.myb @@ -0,0 +1,234 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "An airbrush", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.08902229845626071, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 0.71, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.75, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.99, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.48, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.52, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 2.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.111111, + 0.5 + ], + [ + 0.308642, + 0.833333 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 4.7, + "inputs": { + "custom": [ + [ + -2.0, + 0.45 + ], + [ + 2.0, + -0.45 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/airbrush_prev.png b/stuff/library/mypaint brushes/deevad/airbrush_prev.png new file mode 100644 index 0000000..188ebaa Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/airbrush_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/ballpen.myb b/stuff/library/mypaint brushes/deevad/ballpen.myb new file mode 100644 index 0000000..9977957 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/ballpen.myb @@ -0,0 +1,236 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A ballpen", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 4.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.2, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.354167 + ], + [ + 1.0, + -0.0 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.2, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.8, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.17 + ] + ], + "speed2": [ + [ + 0.0, + -0.0 + ], + [ + 4.0, + -0.04 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/ballpen_prev.png b/stuff/library/mypaint brushes/deevad/ballpen_prev.png new file mode 100644 index 0000000..d74140f Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/ballpen_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/basic_digital_brush.myb b/stuff/library/mypaint brushes/deevad/basic_digital_brush.myb new file mode 100644 index 0000000..4c54a14 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/basic_digital_brush.myb @@ -0,0 +1,273 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A basic rounded digital brush", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 2.3, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.02525252525252525, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 4.63, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 2.54152805533e-05, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.2875, + 0.0625 + ], + [ + 0.645, + 0.19791666666666663 + ], + [ + 0.875, + 0.65625 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.080645, + 0.072917 + ], + [ + 0.154839, + 0.291667 + ], + [ + 0.21129, + 0.458333 + ], + [ + 0.285484, + 0.760417 + ], + [ + 0.348387, + 0.947917 + ], + [ + 0.416129, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.02, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": { + "stroke": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/basic_digital_brush_prev.png b/stuff/library/mypaint brushes/deevad/basic_digital_brush_prev.png new file mode 100644 index 0000000..75a6a40 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/basic_digital_brush_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/basic_digital_brush_smudging.myb b/stuff/library/mypaint brushes/deevad/basic_digital_brush_smudging.myb new file mode 100644 index 0000000..1030200 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/basic_digital_brush_smudging.myb @@ -0,0 +1,257 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A basic rounded brush able to smudge color", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.020849858356940493, + "inputs": {} + }, + "color_s": { + "base_value": 0.9613289760348583, + "inputs": {} + }, + "color_v": { + "base_value": 1.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 0.87, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.48, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -1.0 + ], + [ + 0.61129, + -0.916667 + ], + [ + 0.825806, + -0.614583 + ], + [ + 0.958065, + 0.166667 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.052469, + 0.625 + ], + [ + 0.166667, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.9000000000000012, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.91, + "inputs": { + "pressure": [ + [ + 0.0, + 0.286667 + ], + [ + 1.0, + -0.43 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/basic_digital_brush_smudging_prev.png b/stuff/library/mypaint brushes/deevad/basic_digital_brush_smudging_prev.png new file mode 100644 index 0000000..dfc1f03 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/basic_digital_brush_smudging_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/basic_digital_knife.myb b/stuff/library/mypaint brushes/deevad/basic_digital_knife.myb new file mode 100644 index 0000000..650dd5b --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/basic_digital_knife.myb @@ -0,0 +1,273 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A flat brush attempting to emulate a paint-knife", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 2.3, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.07983276469913346, + "inputs": {} + }, + "color_s": { + "base_value": 0.8515061518879932, + "inputs": {} + }, + "color_v": { + "base_value": 1.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 4.63, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 159.91, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 3.61, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 2.54152805533e-05, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.2875, + 0.0625 + ], + [ + 0.645, + 0.19791666666666663 + ], + [ + 0.875, + 0.65625 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.080645, + 0.072917 + ], + [ + 0.154839, + 0.291667 + ], + [ + 0.21129, + 0.458333 + ], + [ + 0.285484, + 0.760417 + ], + [ + 0.348387, + 0.947917 + ], + [ + 0.416129, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.02, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": { + "stroke": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/basic_digital_knife_prev.png b/stuff/library/mypaint brushes/deevad/basic_digital_knife_prev.png new file mode 100644 index 0000000..3b06ffe Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/basic_digital_knife_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/basic_digital_knife_smudging.myb b/stuff/library/mypaint brushes/deevad/basic_digital_knife_smudging.myb new file mode 100644 index 0000000..31b1b3e --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/basic_digital_knife_smudging.myb @@ -0,0 +1,246 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A flat brush attempting to emulate a paint-knife with smudging", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 4.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.07983276469913346, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 1.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 159.91, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 3.61, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.48, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -1.0 + ], + [ + 0.61129, + -0.916667 + ], + [ + 0.825806, + -0.614583 + ], + [ + 0.958065, + 0.166667 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.052469, + 0.625 + ], + [ + 0.166667, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.25, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.91, + "inputs": { + "pressure": [ + [ + 0.0, + 0.286667 + ], + [ + 1.0, + -0.43 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/basic_digital_knife_smudging_prev.png b/stuff/library/mypaint brushes/deevad/basic_digital_knife_smudging_prev.png new file mode 100644 index 0000000..626abe4 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/basic_digital_knife_smudging_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/blending.myb b/stuff/library/mypaint brushes/deevad/blending.myb new file mode 100644 index 0000000..d06a937 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/blending.myb @@ -0,0 +1,215 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A brush to blend colors on canvas", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.07582697201017817, + "inputs": {} + }, + "color_s": { + "base_value": 0.13795282224094355, + "inputs": {} + }, + "color_v": { + "base_value": 0.5172113289760348, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 4.04, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.58, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.4 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.558, + "inputs": { + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.2 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.95, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.54, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/blending_prev.png b/stuff/library/mypaint brushes/deevad/blending_prev.png new file mode 100644 index 0000000..8b05d04 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/blending_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/brush.myb b/stuff/library/mypaint brushes/deevad/brush.myb new file mode 100644 index 0000000..2c37c30 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/brush.myb @@ -0,0 +1,231 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A brush changing diameters depending on pressure", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 1.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 4.43, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": { + "pressure": [ + [ + 0.0, + -0.69125 + ], + [ + 0.453947, + -0.576042 + ], + [ + 0.723684, + -0.156354 + ], + [ + 1.0, + 0.090521 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.015, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.52, + "inputs": { + "pressure": [ + [ + 0.0, + -0.859375 + ], + [ + 1.0, + 1.5 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/brush_prev.png b/stuff/library/mypaint brushes/deevad/brush_prev.png new file mode 100644 index 0000000..17725ba Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/brush_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/chalk.myb b/stuff/library/mypaint brushes/deevad/chalk.myb new file mode 100644 index 0000000..c3e8d95 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/chalk.myb @@ -0,0 +1,250 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A chalk brush attempt, using many tiny particles on canvas to simulate grain", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.69, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 3.93, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 5.07, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.67, + "inputs": { + "pressure": [ + [ + 0.0, + -0.4 + ], + [ + 0.667722, + -0.0625 + ], + [ + 1.0, + 0.6 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 2.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -2.0 + ] + ], + "speed1": [ + [ + 0.0, + -0.25 + ], + [ + 4.0, + 1.75 + ] + ], + "speed2": [ + [ + 0.0, + -0.25 + ], + [ + 4.0, + 1.75 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.2, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.4 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.58, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/chalk_prev.png b/stuff/library/mypaint brushes/deevad/chalk_prev.png new file mode 100644 index 0000000..a4927ba Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/chalk_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/detail_brush_large.myb b/stuff/library/mypaint brushes/deevad/detail_brush_large.myb new file mode 100644 index 0000000..19c4f89 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/detail_brush_large.myb @@ -0,0 +1,239 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "Part of a subset of detailing brush: large one", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.9958605664488018, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.24, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 178.09, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.12 + ], + [ + 1.0, + -0.18 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.09, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.302469, + 0.104167 + ], + [ + 0.546296, + 0.333333 + ], + [ + 0.688272, + 0.729167 + ], + [ + 0.814815, + 0.927083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.21, + "inputs": { + "pressure": [ + [ + 0.0, + -0.5 + ], + [ + 0.228395, + 0.054687 + ], + [ + 0.574074, + 0.515625 + ], + [ + 1.0, + 0.75 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/detail_brush_large_glazing.myb b/stuff/library/mypaint brushes/deevad/detail_brush_large_glazing.myb new file mode 100644 index 0000000..48fcc1b --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/detail_brush_large_glazing.myb @@ -0,0 +1,239 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "Part of a subset of detailing brush: large glazing one", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.9958605664488018, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.24, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 178.09, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.12 + ], + [ + 1.0, + -0.18 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.0277777777778, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.302469, + 0.104167 + ], + [ + 0.546296, + 0.333333 + ], + [ + 0.688272, + 0.729167 + ], + [ + 0.814815, + 0.927083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.21, + "inputs": { + "pressure": [ + [ + 0.0, + -0.5 + ], + [ + 0.228395, + 0.054687 + ], + [ + 0.574074, + 0.515625 + ], + [ + 1.0, + 0.75 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/detail_brush_large_glazing_prev.png b/stuff/library/mypaint brushes/deevad/detail_brush_large_glazing_prev.png new file mode 100644 index 0000000..be79809 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/detail_brush_large_glazing_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/detail_brush_large_prev.png b/stuff/library/mypaint brushes/deevad/detail_brush_large_prev.png new file mode 100644 index 0000000..a075e4e Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/detail_brush_large_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/detail_brush_thin.myb b/stuff/library/mypaint brushes/deevad/detail_brush_thin.myb new file mode 100644 index 0000000..a61adfa --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/detail_brush_thin.myb @@ -0,0 +1,239 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "Part of a subset of detailing brush: thin one", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.2870959298521136, + "inputs": {} + }, + "color_s": { + "base_value": 0.8021541950113379, + "inputs": {} + }, + "color_v": { + "base_value": 0.2422522316319524, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.24, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 178.09, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.12 + ], + [ + 1.0, + -0.18 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.09, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.302469, + 0.104167 + ], + [ + 0.546296, + 0.333333 + ], + [ + 0.688272, + 0.729167 + ], + [ + 0.814815, + 0.927083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.42, + "inputs": { + "pressure": [ + [ + 0.0, + -0.5 + ], + [ + 0.228395, + 0.054687 + ], + [ + 0.574074, + 0.515625 + ], + [ + 1.0, + 0.75 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/detail_brush_thin_glazing.myb b/stuff/library/mypaint brushes/deevad/detail_brush_thin_glazing.myb new file mode 100644 index 0000000..795460d --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/detail_brush_thin_glazing.myb @@ -0,0 +1,239 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "Part of a subset of detailing brush: thin glazing one", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.24, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 178.09, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.12 + ], + [ + 1.0, + -0.18 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.03, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.302469, + 0.104167 + ], + [ + 0.546296, + 0.333333 + ], + [ + 0.688272, + 0.729167 + ], + [ + 0.814815, + 0.927083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.43, + "inputs": { + "pressure": [ + [ + 0.0, + -0.5 + ], + [ + 0.228395, + 0.054687 + ], + [ + 0.574074, + 0.515625 + ], + [ + 1.0, + 0.75 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/detail_brush_thin_glazing_prev.png b/stuff/library/mypaint brushes/deevad/detail_brush_thin_glazing_prev.png new file mode 100644 index 0000000..546ac3a Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/detail_brush_thin_glazing_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/detail_brush_thin_prev.png b/stuff/library/mypaint brushes/deevad/detail_brush_thin_prev.png new file mode 100644 index 0000000..d6d45a1 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/detail_brush_thin_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/fill.myb b/stuff/library/mypaint brushes/deevad/fill.myb new file mode 100644 index 0000000..1482ad7 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/fill.myb @@ -0,0 +1,223 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A big flat brush to fill color areas", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": { + "pressure": [ + [ + 0.0, + -0.013542 + ], + [ + 1.0, + 0.13 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.025, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.7, + "inputs": { + "pressure": [ + [ + 0.0, + -0.68 + ], + [ + 1.0, + 1.02 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.65, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.8, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/fill_prev.png b/stuff/library/mypaint brushes/deevad/fill_prev.png new file mode 100644 index 0000000..beb79e5 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/fill_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/grainy_blending.myb b/stuff/library/mypaint brushes/deevad/grainy_blending.myb new file mode 100644 index 0000000..99d97c1 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/grainy_blending.myb @@ -0,0 +1,204 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A blending tool with particles to simulate the grain of paper.", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "grainy_blending", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 1.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 5.49, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 42.38, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.15, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 1.62, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.17, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.4 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.05, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.6, + "inputs": {} + }, + "restore_color": { + "base_value": 1.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.95, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 1.45, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/grainy_blending_prev.png b/stuff/library/mypaint brushes/deevad/grainy_blending_prev.png new file mode 100644 index 0000000..2aa178e Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/grainy_blending_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/kneaded_eraser.myb b/stuff/library/mypaint brushes/deevad/kneaded_eraser.myb new file mode 100644 index 0000000..7858f9c --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/kneaded_eraser.myb @@ -0,0 +1,239 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A soft eraser", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.24, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 178.09, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 2.32, + "inputs": {} + }, + "eraser": { + "base_value": 1.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.12 + ], + [ + 1.0, + -0.18 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.09, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.302469, + 0.104167 + ], + [ + 0.546296, + 0.333333 + ], + [ + 0.688272, + 0.729167 + ], + [ + 0.814815, + 0.927083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.32, + "inputs": { + "pressure": [ + [ + 0.0, + -0.5 + ], + [ + 0.228395, + 0.054687 + ], + [ + 0.574074, + 0.515625 + ], + [ + 1.0, + 0.75 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/kneaded_eraser_large.myb b/stuff/library/mypaint brushes/deevad/kneaded_eraser_large.myb new file mode 100644 index 0000000..98d30f8 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/kneaded_eraser_large.myb @@ -0,0 +1,239 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A large and soft eraser", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.24, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 178.09, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 2.32, + "inputs": {} + }, + "eraser": { + "base_value": 1.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.12 + ], + [ + 1.0, + -0.18 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.09, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.302469, + 0.104167 + ], + [ + 0.546296, + 0.333333 + ], + [ + 0.688272, + 0.729167 + ], + [ + 0.814815, + 0.927083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.72, + "inputs": { + "pressure": [ + [ + 0.0, + -0.5 + ], + [ + 0.228395, + 0.054687 + ], + [ + 0.574074, + 0.515625 + ], + [ + 1.0, + 0.75 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/kneaded_eraser_large_prev.png b/stuff/library/mypaint brushes/deevad/kneaded_eraser_large_prev.png new file mode 100644 index 0000000..cff0037 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/kneaded_eraser_large_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/kneaded_eraser_prev.png b/stuff/library/mypaint brushes/deevad/kneaded_eraser_prev.png new file mode 100644 index 0000000..0d83136 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/kneaded_eraser_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/large_hard_eraser.myb b/stuff/library/mypaint brushes/deevad/large_hard_eraser.myb new file mode 100644 index 0000000..5e8ad48 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/large_hard_eraser.myb @@ -0,0 +1,224 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A rubber eraser", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 1.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.025, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.31, + "inputs": { + "pressure": [ + [ + 0.0, + -0.255937 + ], + [ + 0.544304, + 0.060938 + ], + [ + 0.857595, + 0.402187 + ], + [ + 0.939873, + 0.743438 + ], + [ + 1.0, + 1.17 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.65, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.8, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/large_hard_eraser_prev.png b/stuff/library/mypaint brushes/deevad/large_hard_eraser_prev.png new file mode 100644 index 0000000..b8d8d68 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/large_hard_eraser_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/large_watercolor_fringe.myb b/stuff/library/mypaint brushes/deevad/large_watercolor_fringe.myb new file mode 100644 index 0000000..cc02d99 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/large_watercolor_fringe.myb @@ -0,0 +1,230 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A brush attempt to simulate the fringe of watercolor diffusion", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "large_watercolor_fringe", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.041632116586268926, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 1.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 4.39, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 6.99, + "inputs": {} + }, + "direction_filter": { + "base_value": 1.68, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 10.0, + "inputs": { + "random": [ + [ + 0.0, + -1.9 + ], + [ + 1.0, + 1.9 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.9, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.17146776406, + "inputs": { + "pressure": [ + [ + 0.0, + 0.81 + ], + [ + 1.0, + 0.81 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.058642, + 0.604167 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.8000000000000007, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.75, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.7, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": -0.8, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.9, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/large_watercolor_fringe_prev.png b/stuff/library/mypaint brushes/deevad/large_watercolor_fringe_prev.png new file mode 100644 index 0000000..624e127 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/large_watercolor_fringe_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/liner.myb b/stuff/library/mypaint brushes/deevad/liner.myb new file mode 100644 index 0000000..5290851 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/liner.myb @@ -0,0 +1,201 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A small brush to trace regular lines", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 2.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.1289192800566187, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 4.43, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.015, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.7999999999999998, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 1.18, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/liner_prev.png b/stuff/library/mypaint brushes/deevad/liner_prev.png new file mode 100644 index 0000000..d308434 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/liner_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/only_water_fringe.myb b/stuff/library/mypaint brushes/deevad/only_water_fringe.myb new file mode 100644 index 0000000..9d13534 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/only_water_fringe.myb @@ -0,0 +1,230 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A brush attempt to simulate the fringe of watercolor diffusion, only smudging", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.9782674701892076, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 4.39, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 6.99, + "inputs": {} + }, + "direction_filter": { + "base_value": 1.68, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 10.0, + "inputs": { + "random": [ + [ + 0.0, + -1.9 + ], + [ + 1.0, + 1.9 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.9, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.17146776406, + "inputs": { + "pressure": [ + [ + 0.0, + 0.81 + ], + [ + 1.0, + 0.81 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.058642, + 0.604167 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.8000000000000007, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.7, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": -0.8, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.9, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/only_water_fringe_prev.png b/stuff/library/mypaint brushes/deevad/only_water_fringe_prev.png new file mode 100644 index 0000000..19563bd Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/only_water_fringe_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/pen-note.myb b/stuff/library/mypaint brushes/deevad/pen-note.myb new file mode 100644 index 0000000..5ccd659 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/pen-note.myb @@ -0,0 +1,243 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A pen to write notes", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "deevad/pen", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.1289192800566187, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.39, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.05 + ] + ], + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -0.07 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.015, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.6699999999999999, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.5 + ] + ], + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -0.21 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.65, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.8, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/pen-note_prev.png b/stuff/library/mypaint brushes/deevad/pen-note_prev.png new file mode 100644 index 0000000..1846938 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/pen-note_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/pen.myb b/stuff/library/mypaint brushes/deevad/pen.myb new file mode 100644 index 0000000..0f23bab --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/pen.myb @@ -0,0 +1,239 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A pen to draw and sketch", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.24, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 178.09, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.12 + ], + [ + 1.0, + -0.18 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.0899999999998, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.302469, + 0.104167 + ], + [ + 0.546296, + 0.333333 + ], + [ + 0.688272, + 0.729167 + ], + [ + 0.814815, + 0.927083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.72, + "inputs": { + "pressure": [ + [ + 0.0, + -0.5 + ], + [ + 0.326923, + -0.320312 + ], + [ + 0.717949, + 0.046875 + ], + [ + 1.0, + 0.75 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 1.03, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 1.52, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/pen_prev.png b/stuff/library/mypaint brushes/deevad/pen_prev.png new file mode 100644 index 0000000..660a32c Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/pen_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/readme.txt b/stuff/library/mypaint brushes/deevad/readme.txt new file mode 100644 index 0000000..ca68ce3 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/readme.txt @@ -0,0 +1,24 @@ + __//| +/oo | +\mm\_ . . . . . . . D E E V A D brushkit V6 . . . . . . . . . . . . . . . . . . . . . . + +This is Deevad's brushset version 6 done for Mypaint version 1.1.0 +This brush kit is released in public domain, so feel free to create +what you want with it. + +If you accept this license, a new brush group named 'deevad-v6' will +be created. More infos on the brushes on my blog, or my deviant-art +account , under the ressources category. + +Released in end october 2012 + + +########################################### +### WARNING ! INCOMPATIBLE WITH MYPAINT 1.0.0 AND BEFORE ### +########################################### + +Creative Commons Zero +Public Domain + +Website and blog : http://www.davidrevoy.com +deviantART : http://deevad.deviantart.com/ \ No newline at end of file diff --git a/stuff/library/mypaint brushes/deevad/rigger_brush.myb b/stuff/library/mypaint brushes/deevad/rigger_brush.myb new file mode 100644 index 0000000..624c4b9 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/rigger_brush.myb @@ -0,0 +1,239 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A brush for small details", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.24, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 178.09, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.12 + ], + [ + 1.0, + -0.18 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.2916, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.302469, + 0.104167 + ], + [ + 0.546296, + 0.333333 + ], + [ + 0.688272, + 0.729167 + ], + [ + 0.814815, + 0.927083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.36, + "inputs": { + "pressure": [ + [ + 0.0, + -0.5 + ], + [ + 0.228395, + 0.054687 + ], + [ + 0.574074, + 0.515625 + ], + [ + 1.0, + 0.75 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/rigger_brush_prev.png b/stuff/library/mypaint brushes/deevad/rigger_brush_prev.png new file mode 100644 index 0000000..6db91b1 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/rigger_brush_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/rigger_brush_thin.myb b/stuff/library/mypaint brushes/deevad/rigger_brush_thin.myb new file mode 100644 index 0000000..9077d61 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/rigger_brush_thin.myb @@ -0,0 +1,239 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A brush for very small details", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.108920239366, + "inputs": {} + }, + "color_s": { + "base_value": 0.986088544326, + "inputs": {} + }, + "color_v": { + "base_value": 0.98608377203, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.55, + "inputs": { + "pressure": [ + [ + 0.0, + 0.12 + ], + [ + 1.0, + -0.18 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.57, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.302469, + 0.104167 + ], + [ + 0.546296, + 0.333333 + ], + [ + 0.688272, + 0.729167 + ], + [ + 0.814815, + 0.927083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.12, + "inputs": { + "pressure": [ + [ + 0.0, + -0.5 + ], + [ + 0.228395, + 0.054687 + ], + [ + 0.574074, + 0.515625 + ], + [ + 1.0, + 0.75 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/rigger_brush_thin_prev.png b/stuff/library/mypaint brushes/deevad/rigger_brush_thin_prev.png new file mode 100644 index 0000000..16dc0a8 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/rigger_brush_thin_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/rough.myb b/stuff/library/mypaint brushes/deevad/rough.myb new file mode 100644 index 0000000..db0b8c0 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/rough.myb @@ -0,0 +1,239 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A large low opacity brush to draw main shape and rough an artwork", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.07983276469913346, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.24, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 178.09, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.12 + ], + [ + 1.0, + -0.18 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.015432098765444446, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.302469, + 0.104167 + ], + [ + 0.546296, + 0.333333 + ], + [ + 0.688272, + 0.729167 + ], + [ + 0.814815, + 0.927083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.01, + "inputs": { + "pressure": [ + [ + 0.0, + -0.5 + ], + [ + 0.228395, + 0.054687 + ], + [ + 0.574074, + 0.515625 + ], + [ + 1.0, + 0.75 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 1.01, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 1.55, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/rough_prev.png b/stuff/library/mypaint brushes/deevad/rough_prev.png new file mode 100644 index 0000000..a1dbb92 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/rough_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/soft-dip-pen.myb b/stuff/library/mypaint brushes/deevad/soft-dip-pen.myb new file mode 100644 index 0000000..5998e5a --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/soft-dip-pen.myb @@ -0,0 +1,268 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A hard line with size variation for vigorous inking rendering", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.93, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.127540852929, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 3.24, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 48.87, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.43, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.29, + "inputs": { + "pressure": [ + [ + 0.0, + -0.989583 + ], + [ + 0.38253, + -0.59375 + ], + [ + 0.656627, + 0.041667 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.29, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.92, + "inputs": { + "pressure": [ + [ + 0.0, + -0.7875 + ], + [ + 0.237952, + -0.6 + ], + [ + 0.5, + -0.15 + ], + [ + 0.76506, + 0.6 + ], + [ + 1.0, + 0.9 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 10.0, + "inputs": { + "speed1": [ + [ + 0.0, + -1.428571 + ], + [ + 4.0, + 10.0 + ] + ], + "speed2": [ + [ + 0.0, + -1.428571 + ], + [ + 4.0, + 10.0 + ] + ] + } + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/soft-dip-pen_prev.png b/stuff/library/mypaint brushes/deevad/soft-dip-pen_prev.png new file mode 100644 index 0000000..2d9f249 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/soft-dip-pen_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/sponge_smudging.myb b/stuff/library/mypaint brushes/deevad/sponge_smudging.myb new file mode 100644 index 0000000..6a4d0a5 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/sponge_smudging.myb @@ -0,0 +1,251 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "For smudging large area with a smooth texture", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.2336371488438775, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 6.1, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "stroke": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 3.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.45, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.33, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.13, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.033951, + 0.0625 + ], + [ + 1.0, + 0.1 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.0999999999999996, + "inputs": { + "pressure": [ + [ + 0.0, + -0.687917 + ], + [ + 1.0, + 0.568854 + ] + ], + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 4.0, + 1.01 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/sponge_smudging_prev.png b/stuff/library/mypaint brushes/deevad/sponge_smudging_prev.png new file mode 100644 index 0000000..7653555 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/sponge_smudging_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/spray.myb b/stuff/library/mypaint brushes/deevad/spray.myb new file mode 100644 index 0000000..06d632e --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/spray.myb @@ -0,0 +1,234 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "Throw particles on the canvas, simulate spray bomb", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 0.95, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 3.92, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 74.55, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.43, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 2.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.62963, + 0.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.28, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.19, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.54321, + -1.82 + ], + [ + 1.0, + -0.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.83, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 1.47, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -1.55 + ] + ] + } + }, + "stroke_holdtime": { + "base_value": 1.44, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 1.36, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/spray2.myb b/stuff/library/mypaint brushes/deevad/spray2.myb new file mode 100644 index 0000000..31a5629 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/spray2.myb @@ -0,0 +1,245 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "Particles of paint have various size, to create splatter on the canvas", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.44, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 2.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 2.0 + ] + ], + "pressure": [ + [ + 0.0, + 2.0 + ], + [ + 1.0, + 2.0 + ] + ], + "speed2": [ + [ + 0.0, + -0.268571 + ], + [ + 4.0, + 1.88 + ] + ], + "stroke": [ + [ + 0.0, + 2.0 + ], + [ + 1.0, + 2.0 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 2.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.145833 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.95, + "inputs": { + "random": [ + [ + 0.0, + -0.98 + ], + [ + 1.0, + 0.98 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/spray2_prev.png b/stuff/library/mypaint brushes/deevad/spray2_prev.png new file mode 100644 index 0000000..0f92af7 Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/spray2_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/spray_prev.png b/stuff/library/mypaint brushes/deevad/spray_prev.png new file mode 100644 index 0000000..2447def Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/spray_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/thin_hard_eraser.myb b/stuff/library/mypaint brushes/deevad/thin_hard_eraser.myb new file mode 100644 index 0000000..c068e68 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/thin_hard_eraser.myb @@ -0,0 +1,224 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A thin hard eraser", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 1.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.025, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.21, + "inputs": { + "pressure": [ + [ + 0.0, + -0.255937 + ], + [ + 0.544304, + 0.060938 + ], + [ + 0.857595, + 0.402187 + ], + [ + 0.939873, + 0.743438 + ], + [ + 1.0, + 1.17 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.65, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.8, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/thin_hard_eraser_prev.png b/stuff/library/mypaint brushes/deevad/thin_hard_eraser_prev.png new file mode 100644 index 0000000..c039bbf Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/thin_hard_eraser_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/thin_watercolor.myb b/stuff/library/mypaint brushes/deevad/thin_watercolor.myb new file mode 100644 index 0000000..4f45d5a --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/thin_watercolor.myb @@ -0,0 +1,259 @@ +{ + "comment": "MyPaint brush file", + "description": "", + "group": "", + "description": "A thin brush to add detail in digital watercolour", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "notes": "", + "parent_brush_name": "deevad/thin_watercolor", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.1607843137254902, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 10.0, + "inputs": { + "speed1": [ + [ + 0.0, + -7.5 + ], + [ + 0.962963, + -2.03125 + ], + [ + 4.0, + 0.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.76, + "inputs": { + "pressure": [ + [ + 0.0, + -0.044792 + ], + [ + 0.723684, + -0.147812 + ], + [ + 1.0, + -0.241875 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.17146776406, + "inputs": { + "pressure": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.058642, + 0.604167 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.0, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.9, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.9, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/thin_watercolor_prev.png b/stuff/library/mypaint brushes/deevad/thin_watercolor_prev.png new file mode 100644 index 0000000..b0267ad Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/thin_watercolor_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/watercolor_expressive.myb b/stuff/library/mypaint brushes/deevad/watercolor_expressive.myb new file mode 100644 index 0000000..3e38bee --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/watercolor_expressive.myb @@ -0,0 +1,322 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A brush with sensitivity on size while producing a fringe to simulate watercolor", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.150621805142, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 1.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 4.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 0.75, + -0.0 + ], + [ + 1.0, + -2.7 + ] + ], + "speed1": [ + [ + 0.0, + -0.7 + ], + [ + 4.0, + 0.7 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.23, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 0.746914, + -0.0 + ], + [ + 0.884375, + -0.0 + ], + [ + 1.0, + -0.032083 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.75, + 0.0 + ], + [ + 1.0, + 0.8 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 2.0, + "inputs": { + "random": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.040123, + 0.885417 + ], + [ + 0.138889, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.5, + "inputs": { + "pressure": [ + [ + 0.0, + -2.9 + ], + [ + 1.0, + 0.845833 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.71, + "inputs": { + "pressure": [ + [ + 0.0, + -0.65 + ], + [ + 0.5, + -0.358854 + ], + [ + 0.796875, + -0.094792 + ], + [ + 1.0, + 0.24375 + ] + ], + "speed1": [ + [ + 0.0, + -0.1 + ], + [ + 4.0, + 0.1 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.1, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 6.5, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/watercolor_expressive_prev.png b/stuff/library/mypaint brushes/deevad/watercolor_expressive_prev.png new file mode 100644 index 0000000..da9b8cb Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/watercolor_expressive_prev.png differ diff --git a/stuff/library/mypaint brushes/deevad/watercolor_glazing.myb b/stuff/library/mypaint brushes/deevad/watercolor_glazing.myb new file mode 100644 index 0000000..3382c08 --- /dev/null +++ b/stuff/library/mypaint brushes/deevad/watercolor_glazing.myb @@ -0,0 +1,253 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "description": "A watercolor brush preset to glaze area", + "notes": "A brush preset part of the Brushkit v0.6 \n created in october 2012 by David Revoy ( aka Deevad ) \n source: http://www.davidrevoy.com/article142/ressource-mypaint-brushes \n license: CC-Zero/Public-Domain", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0590291819643, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.874542195901, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 10.0, + "inputs": { + "speed1": [ + [ + 0.0, + -7.5 + ], + [ + 0.962963, + -2.03125 + ], + [ + 4.0, + 0.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.41, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.44, + "inputs": { + "pressure": [ + [ + 0.0, + -0.43125 + ], + [ + 0.258721, + -0.277917 + ], + [ + 0.540698, + 0.0 + ], + [ + 1.0, + 0.92 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.058642, + 0.604167 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.6, + "inputs": { + "pressure": [ + [ + 0.0, + -0.653333 + ], + [ + 1.0, + 0.98 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.9, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.9, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} diff --git a/stuff/library/mypaint brushes/deevad/watercolor_glazing_prev.png b/stuff/library/mypaint brushes/deevad/watercolor_glazing_prev.png new file mode 100644 index 0000000..834144d Binary files /dev/null and b/stuff/library/mypaint brushes/deevad/watercolor_glazing_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/1pixel.myb b/stuff/library/mypaint brushes/experimental/1pixel.myb new file mode 100644 index 0000000..6d73d85 --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/1pixel.myb @@ -0,0 +1,258 @@ +{ + "comment": "MyPaint brush file", + "description": "1-pixel brush for pixel art", + "group": "", + "notes": "Reduce Dabs Per Actual Radius to 0.03 for a hardedged dash annotation brush.\n\nThis one's fairly imperfect. notably has jags on curves compared to what Grafx2 or Gimp can produce. GIMP achieves its results via varying dab spacing according to rate of direction change, IIRC. Maybe a similar result could be achieved by a Direction curve for Dabs Per Actual radius, but I haven't managed it yet. In rare conditions experiences a 1px break in the line \u2014 I guess/hope that might also be fixable via a Dabs Per Actual Radius curve.", + "parent_brush_name": "experimental/1pixel", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 0.9, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 79.69, + "inputs": {} + }, + "direction_filter": { + "base_value": 10.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + -180.0 + ], + [ + 46.849315, + 180.0 + ], + [ + 90.0, + -180.0 + ], + [ + 136.232877, + 180.0 + ], + [ + 180.0, + -180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": { + "direction": [ + [ + 0.0, + -0.1 + ], + [ + 48.6, + 0.1 + ], + [ + 90.0, + -0.1 + ], + [ + 136.8, + 0.1 + ], + [ + 180.0, + -0.1 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": -0.58, + "inputs": { + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 4.0, + 0.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 1.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": -8.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.2, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 3.86, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/1pixel_prev.png b/stuff/library/mypaint brushes/experimental/1pixel_prev.png new file mode 100644 index 0000000..5a3c68e Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/1pixel_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/DNA_brush.myb b/stuff/library/mypaint brushes/experimental/DNA_brush.myb new file mode 100644 index 0000000..02f6be9 --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/DNA_brush.myb @@ -0,0 +1,274 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "experimental/DNA_brush", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.246914, + 1.44 + ], + [ + 0.753086, + -1.44 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 4.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.1, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.66, + "inputs": { + "pressure": [ + [ + 0.0, + 0.891354 + ], + [ + 1.0, + 1.99 + ] + ], + "speed1": [ + [ + 0.0, + -2.61 + ], + [ + 4.0, + -2.61 + ] + ], + "speed2": [ + [ + 0.0, + -0.202857 + ], + [ + 4.0, + 1.42 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 1.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 1.59, + "inputs": { + "pressure": [ + [ + 0.0, + -1.753333 + ], + [ + 1.0, + 2.63 + ] + ] + } + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 6.36, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/DNA_brush_prev.png b/stuff/library/mypaint brushes/experimental/DNA_brush_prev.png new file mode 100644 index 0000000..c695e23 Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/DNA_brush_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/basic.myb b/stuff/library/mypaint brushes/experimental/basic.myb new file mode 100644 index 0000000..2283362 --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/basic.myb @@ -0,0 +1,191 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.0, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/basic_prev.png b/stuff/library/mypaint brushes/experimental/basic_prev.png new file mode 100644 index 0000000..d3a9cef Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/basic_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/bubble.myb b/stuff/library/mypaint brushes/experimental/bubble.myb new file mode 100644 index 0000000..0bec9ac --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/bubble.myb @@ -0,0 +1,309 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "experimental/bubble", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.185, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.228395, + -0.039844 + ], + [ + 0.391975, + -0.098281 + ], + [ + 0.574074, + -0.201875 + ], + [ + 1.0, + -0.255 + ] + ], + "random": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.075 + ] + ], + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.04 + ] + ] + } + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.64, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 2.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.126582, + -2.678125 + ], + [ + 0.370253, + -5.802604 + ], + [ + 1.0, + -8.57 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.17, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.56 + ] + ] + } + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.6, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": -1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.42284, + -0.122708 + ], + [ + 1.0, + -0.31 + ] + ], + "random": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.25 + ] + ], + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.28 + ] + ], + "speed2": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.35 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.09, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/bubble_prev.png b/stuff/library/mypaint brushes/experimental/bubble_prev.png new file mode 100644 index 0000000..1f55415 Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/bubble_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/fur.myb b/stuff/library/mypaint brushes/experimental/fur.myb new file mode 100644 index 0000000..65cf214 --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/fur.myb @@ -0,0 +1,387 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.231481, + -0.022396 + ], + [ + 0.391975, + -0.082865 + ], + [ + 0.583333, + -0.201563 + ], + [ + 1.0, + -0.215 + ] + ], + "random": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.075 + ] + ], + "speed2": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.04 + ] + ] + } + }, + "color_h": { + "base_value": 0.837944664032, + "inputs": {} + }, + "color_s": { + "base_value": 0.776470588235, + "inputs": {} + }, + "color_v": { + "base_value": 0.029831387808, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 10.0 + ] + ], + "random": [ + [ + 0.0, + -10.0 + ], + [ + 1.0, + 10.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.3, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 20.67, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 56.25, + 131.25 + ], + [ + 97.3125, + -150.0 + ], + [ + 180.0, + 180.0 + ] + ], + "random": [ + [ + 0.0, + -84.0 + ], + [ + 0.2, + 84.0 + ], + [ + 0.865625, + -66.5 + ], + [ + 1.0, + 84.0 + ] + ], + "speed2": [ + [ + 0.0, + -22.775714 + ], + [ + 4.0, + 159.43 + ] + ], + "stroke": [ + [ + 0.0, + 14.29 + ], + [ + 1.0, + -14.29 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 10.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.6, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 2.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.126582, + -2.678125 + ], + [ + 0.370253, + -5.802604 + ], + [ + 1.0, + -8.57 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.56 + ] + ] + } + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.4, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 1.25, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.26, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.42284, + -0.122708 + ], + [ + 1.0, + -0.31 + ] + ], + "random": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.25 + ] + ], + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.28 + ] + ], + "speed2": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.35 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.09, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 5.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 2.02, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/fur_prev.png b/stuff/library/mypaint brushes/experimental/fur_prev.png new file mode 100644 index 0000000..91bf05c Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/fur_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/glow.myb b/stuff/library/mypaint brushes/experimental/glow.myb new file mode 100644 index 0000000..8974018 --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/glow.myb @@ -0,0 +1,241 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.5, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.16, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.05 + ] + ], + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -0.09 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.43, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.025, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.19, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.5 + ] + ], + "speed1": [ + [ + 0.0, + -0.219479 + ], + [ + 1.0, + -0.43 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.65, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.8, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/glow_prev.png b/stuff/library/mypaint brushes/experimental/glow_prev.png new file mode 100644 index 0000000..6a71f0f Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/glow_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/hard_blot.myb b/stuff/library/mypaint brushes/experimental/hard_blot.myb new file mode 100644 index 0000000..a8ffe8e --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/hard_blot.myb @@ -0,0 +1,191 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 4.54, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.46, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0, + 0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 1.5, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.8, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/hard_blot_prev.png b/stuff/library/mypaint brushes/experimental/hard_blot_prev.png new file mode 100644 index 0000000..7613d83 Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/hard_blot_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/hard_sting.myb b/stuff/library/mypaint brushes/experimental/hard_sting.myb new file mode 100644 index 0000000..e83912b --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/hard_sting.myb @@ -0,0 +1,263 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "experimental/hard_sting", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.95, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.62963, + 0.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ], + "stroke": [ + [ + 0.0, + -0.254583 + ], + [ + 0.058642, + -0.043333 + ], + [ + 0.231481, + 0.0 + ], + [ + 0.5, + 0.0 + ], + [ + 0.796296, + -0.037917 + ], + [ + 0.91358, + -0.47125 + ], + [ + 1.0, + -0.52 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.19, + "inputs": { + "stroke": [ + [ + 0.0, + -0.89625 + ], + [ + 0.145062, + -0.199167 + ], + [ + 0.530864, + -0.697083 + ], + [ + 0.734568, + -1.344375 + ], + [ + 0.888889, + -2.838125 + ], + [ + 1.0, + -4.78 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 2.86, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/hard_sting_prev.png b/stuff/library/mypaint brushes/experimental/hard_sting_prev.png new file mode 100644 index 0000000..bebdc16 Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/hard_sting_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/irregular_ink.myb b/stuff/library/mypaint brushes/experimental/irregular_ink.myb new file mode 100644 index 0000000..aec1fdc --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/irregular_ink.myb @@ -0,0 +1,263 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "experimental/irregular_ink", + "settings": { + "anti_aliasing": { + "base_value": 2.76, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -5.3 + ], + [ + 1.0, + 5.3 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 10.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.66, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.05 + ] + ], + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -0.09 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.015, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.02, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.5 + ] + ], + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -0.21 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.65, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.8, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 2.69, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/irregular_ink_prev.png b/stuff/library/mypaint brushes/experimental/irregular_ink_prev.png new file mode 100644 index 0000000..249f6f6 Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/irregular_ink_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/leaves.myb b/stuff/library/mypaint brushes/experimental/leaves.myb new file mode 100644 index 0000000..42809a5 --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/leaves.myb @@ -0,0 +1,316 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "experimental/leaves", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": { + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -0.12 + ] + ], + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.651235, + -0.007889 + ], + [ + 0.70679, + 0.115704 + ], + [ + 0.891975, + 0.101241 + ], + [ + 1.0, + -0.0 + ] + ] + } + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.69 + ] + ] + } + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.195, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.57 + ] + ], + "random": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.355 + ] + ], + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.080247, + -0.150625 + ], + [ + 0.614198, + 0.150625 + ], + [ + 0.753086, + 0.351458 + ], + [ + 1.0, + 0.476979 + ] + ] + } + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.62963, + 0.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.89, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.598765, + -1.4175 + ], + [ + 0.709877, + 0.227813 + ], + [ + 0.898148, + -0.227813 + ], + [ + 1.0, + -2.43 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": -7.16, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 2.76, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/leaves_prev.png b/stuff/library/mypaint brushes/experimental/leaves_prev.png new file mode 100644 index 0000000..c071a57 Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/leaves_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/particules_3.myb b/stuff/library/mypaint brushes/experimental/particules_3.myb new file mode 100644 index 0000000..59eb476 --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/particules_3.myb @@ -0,0 +1,319 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "experimental/particules_3", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.24, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.228395, + -0.039844 + ], + [ + 0.391975, + -0.098281 + ], + [ + 0.574074, + -0.201875 + ], + [ + 1.0, + -0.255 + ] + ], + "random": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.075 + ] + ], + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.04 + ] + ] + } + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.4, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 2.39 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.72, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + -1.333333 + ], + [ + 1.0, + 2.0 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.17, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.56 + ] + ] + } + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.6, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.6, + "inputs": { + "pressure": [ + [ + 0.0, + 0.196979 + ], + [ + 1.0, + -0.31 + ] + ], + "random": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.25 + ] + ], + "speed1": [ + [ + 0.0, + -0.09 + ], + [ + 1.0, + 0.09 + ] + ], + "speed2": [ + [ + 0.0, + -0.09 + ], + [ + 1.0, + 0.09 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 5.95, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.05, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.06, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/particules_3_prev.png b/stuff/library/mypaint brushes/experimental/particules_3_prev.png new file mode 100644 index 0000000..cc4fa69 Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/particules_3_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/particules_eraser.myb b/stuff/library/mypaint brushes/experimental/particules_eraser.myb new file mode 100644 index 0000000..cf7d1e2 --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/particules_eraser.myb @@ -0,0 +1,271 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "experimental/particules_eraser", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -0.2 + ], + [ + 1.0, + 0.2 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 4.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -1.0 + ], + [ + 0.5, + -1.0 + ], + [ + 0.5, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 2.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.132911, + 0.510417 + ], + [ + 0.386076, + 0.802083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.3, + "inputs": { + "stroke": [ + [ + 0.0, + -1.39 + ], + [ + 0.061433, + -1.259687 + ], + [ + 0.37628, + 1.114895 + ], + [ + 0.5, + 1.39 + ], + [ + 0.610922, + 1.21625 + ], + [ + 0.90273, + -1.245208 + ], + [ + 1.0, + -1.39 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/particules_eraser_prev.png b/stuff/library/mypaint brushes/experimental/particules_eraser_prev.png new file mode 100644 index 0000000..d2572b4 Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/particules_eraser_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/pick_and_drag.myb b/stuff/library/mypaint brushes/experimental/pick_and_drag.myb new file mode 100644 index 0000000..4b6fe2a --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/pick_and_drag.myb @@ -0,0 +1,285 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "experimental/pick_and_drag", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 3.76, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.56, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.91, + "inputs": { + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.2 + ] + ], + "stroke": [ + [ + 0.0, + -1.0 + ], + [ + 0.5, + 0.0 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.077381, + 0.197917 + ], + [ + 0.229167, + 0.385417 + ], + [ + 0.589286, + 0.510417 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.8, + "inputs": { + "pressure": [ + [ + 0.0, + 0.186667 + ], + [ + 1.0, + -0.28 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.256173, + 0.0 + ], + [ + 0.54321, + -0.114583 + ], + [ + 0.82716, + -0.447917 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + -1.0 + ], + [ + 0.104938, + -0.895833 + ], + [ + 0.274691, + 0.697917 + ], + [ + 0.580247, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 0.44, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/pick_and_drag_prev.png b/stuff/library/mypaint brushes/experimental/pick_and_drag_prev.png new file mode 100644 index 0000000..141ea9e Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/pick_and_drag_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/pixel_hardink.myb b/stuff/library/mypaint brushes/experimental/pixel_hardink.myb new file mode 100644 index 0000000..d07aa33 --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/pixel_hardink.myb @@ -0,0 +1,276 @@ +{ + "comment": "MyPaint brush file", + "description": "Light, small, relatively slow hard-edged ink brush.", + "group": "", + "notes": "Designed for thumbnailing, gesture, and design.\n\nThis has mild 'not enough tapering levels' issues. Not fixable if I understand MyPaint's brush engine right, though. Expressive enough though.", + "parent_brush_name": "experimental/pixel_hardink", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 0.9, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 79.69, + "inputs": {} + }, + "direction_filter": { + "base_value": 10.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + -180.0 + ], + [ + 46.849315, + 180.0 + ], + [ + 90.0, + -180.0 + ], + [ + 136.232877, + 180.0 + ], + [ + 180.0, + -180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": { + "direction": [ + [ + 0.0, + -0.1 + ], + [ + 48.6, + 0.1 + ], + [ + 90.0, + -0.1 + ], + [ + 136.8, + 0.1 + ], + [ + 180.0, + -0.1 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": -0.58, + "inputs": { + "pressure": [ + [ + 0.0, + -0.53125 + ], + [ + 0.752119, + 0.5 + ], + [ + 0.980932, + 1.34375 + ], + [ + 1.0, + 1.46875 + ] + ], + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 4.0, + 0.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 1.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": -8.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.2, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 3.86, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/pixel_hardink_prev.png b/stuff/library/mypaint brushes/experimental/pixel_hardink_prev.png new file mode 100644 index 0000000..5a25396 Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/pixel_hardink_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/pixelblocking.myb b/stuff/library/mypaint brushes/experimental/pixelblocking.myb new file mode 100644 index 0000000..7ca544e --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/pixelblocking.myb @@ -0,0 +1,258 @@ +{ + "comment": "MyPaint brush file", + "description": "15px brush for hard edged blocking-in", + "group": "", + "notes": "Works fine in its simple function.", + "parent_brush_name": "experimental/pixelblocking", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 0.9, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 79.69, + "inputs": {} + }, + "direction_filter": { + "base_value": 10.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + -180.0 + ], + [ + 46.849315, + 180.0 + ], + [ + 90.0, + -180.0 + ], + [ + 136.232877, + 180.0 + ], + [ + 180.0, + -180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": { + "direction": [ + [ + 0.0, + -0.1 + ], + [ + 48.6, + 0.1 + ], + [ + 90.0, + -0.1 + ], + [ + 136.8, + 0.1 + ], + [ + 180.0, + -0.1 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.0, + "inputs": { + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 4.0, + 0.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 5.15, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 1.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": -8.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.2, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 3.86, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/pixelblocking_prev.png b/stuff/library/mypaint brushes/experimental/pixelblocking_prev.png new file mode 100644 index 0000000..c5436a6 Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/pixelblocking_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/sewing.myb b/stuff/library/mypaint brushes/experimental/sewing.myb new file mode 100644 index 0000000..f351f3c --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/sewing.myb @@ -0,0 +1,250 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "experimental/sewing", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.9, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.62963, + 0.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.72, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.496914, + 0.734062 + ], + [ + 1.0, + -0.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 2.76, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 4.83, + "inputs": { + "random": [ + [ + 0.0, + 0.0 + ], + [ + 0.256329, + -3.313125 + ], + [ + 0.541139, + -4.7025 + ], + [ + 1.0, + -5.13 + ] + ], + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.64 + ] + ] + } + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/sewing_prev.png b/stuff/library/mypaint brushes/experimental/sewing_prev.png new file mode 100644 index 0000000..234ab80 Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/sewing_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/small_blot.myb b/stuff/library/mypaint brushes/experimental/small_blot.myb new file mode 100644 index 0000000..ed1d353 --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/small_blot.myb @@ -0,0 +1,202 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.71, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.21, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.31, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.46, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0, + 0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.42, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.22, + "inputs": { + "pressure": [ + [ + 0, + 0 + ], + [ + 1.0, + -1.77 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/small_blot_prev.png b/stuff/library/mypaint brushes/experimental/small_blot_prev.png new file mode 100644 index 0000000..4f3a96c Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/small_blot_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/soft.myb b/stuff/library/mypaint brushes/experimental/soft.myb new file mode 100644 index 0000000..662c346 --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/soft.myb @@ -0,0 +1,228 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.145527646522, + "inputs": {} + }, + "color_s": { + "base_value": 0.240937144227, + "inputs": {} + }, + "color_v": { + "base_value": 0.509315632868, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 3.14, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.63, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.69, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.175926, + 0.167917 + ], + [ + 0.354938, + 0.226042 + ], + [ + 0.546296, + 0.238958 + ], + [ + 0.753086, + 0.167917 + ], + [ + 1.0, + 0.064583 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.4, + "inputs": { + "pressure": [ + [ + 0.0, + 0.766667 + ], + [ + 1.0, + -1.15 + ] + ], + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.99 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.3, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/soft_irregular.myb b/stuff/library/mypaint brushes/experimental/soft_irregular.myb new file mode 100644 index 0000000..8f429c4 --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/soft_irregular.myb @@ -0,0 +1,253 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.246914, + 0.1 + ], + [ + 0.753086, + -0.1 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 4.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.1, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.11, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.3 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": -1.11, + "inputs": { + "pressure": [ + [ + 0.0, + 0.891354 + ], + [ + 1.0, + 1.99 + ] + ], + "speed2": [ + [ + 0.0, + -0.202857 + ], + [ + 4.0, + 1.42 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 1.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 7.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 9.02, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/soft_irregular_prev.png b/stuff/library/mypaint brushes/experimental/soft_irregular_prev.png new file mode 100644 index 0000000..9ccd170 Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/soft_irregular_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/soft_prev.png b/stuff/library/mypaint brushes/experimental/soft_prev.png new file mode 100644 index 0000000..befb8a7 Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/soft_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/spaced-blot.myb b/stuff/library/mypaint brushes/experimental/spaced-blot.myb new file mode 100644 index 0000000..5f534a2 --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/spaced-blot.myb @@ -0,0 +1,232 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "experimental/spaced-blot", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.9, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.62963, + 0.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.89, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.54321, + -1.82 + ], + [ + 1.0, + -0.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 1.47, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -1.55 + ] + ] + } + }, + "stroke_holdtime": { + "base_value": 1.44, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/spaced-blot_prev.png b/stuff/library/mypaint brushes/experimental/spaced-blot_prev.png new file mode 100644 index 0000000..64a2f47 Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/spaced-blot_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/speed_blot.myb b/stuff/library/mypaint brushes/experimental/speed_blot.myb new file mode 100644 index 0000000..5998c37 --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/speed_blot.myb @@ -0,0 +1,202 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.71, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.21, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.31, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.42, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.22, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -1.77 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/speed_blot_prev.png b/stuff/library/mypaint brushes/experimental/speed_blot_prev.png new file mode 100644 index 0000000..420cc63 Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/speed_blot_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/subtle_pencil.myb b/stuff/library/mypaint brushes/experimental/subtle_pencil.myb new file mode 100644 index 0000000..92c640e --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/subtle_pencil.myb @@ -0,0 +1,272 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 9.23, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.5, + "inputs": { + "custom": [ + [ + -2.0, + 0.0 + ], + [ + -0.703704, + 0.007292 + ], + [ + 0.469136, + 0.027083 + ], + [ + 2.0, + 0.1 + ] + ], + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.05 + ] + ], + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -0.09 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.66, + "inputs": { + "custom": [ + [ + -2.0, + -3.62 + ], + [ + 2.0, + 3.62 + ] + ], + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.5 + ] + ], + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -0.21 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.65, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.8, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/subtle_pencil_prev.png b/stuff/library/mypaint brushes/experimental/subtle_pencil_prev.png new file mode 100644 index 0000000..370aae3 Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/subtle_pencil_prev.png differ diff --git a/stuff/library/mypaint brushes/experimental/track.myb b/stuff/library/mypaint brushes/experimental/track.myb new file mode 100644 index 0000000..eddd8b4 --- /dev/null +++ b/stuff/library/mypaint brushes/experimental/track.myb @@ -0,0 +1,210 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.84, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.44, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.09, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.42, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": -0.43, + "inputs": { + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 0.304198, + 0.475 + ], + [ + 0.684444, + 0.940104 + ], + [ + 0.77, + 0.95 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.01, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/experimental/track_prev.png b/stuff/library/mypaint brushes/experimental/track_prev.png new file mode 100644 index 0000000..7eec85f Binary files /dev/null and b/stuff/library/mypaint brushes/experimental/track_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/Airbrush_a.myb b/stuff/library/mypaint brushes/kaerhon_v1/Airbrush_a.myb new file mode 100644 index 0000000..6c2a3e9 --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/Airbrush_a.myb @@ -0,0 +1,240 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.39, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.7850717691080759, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 0.71, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.99, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.36, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.5, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 2.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.111111, + 0.5 + ], + [ + 0.308642, + 0.833333 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 4.7, + "inputs": { + "custom": [ + [ + -2.0, + 0.45 + ], + [ + 2.0, + -0.45 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/Airbrush_a_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/Airbrush_a_prev.png new file mode 100644 index 0000000..55d0ab1 Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/Airbrush_a_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/Dirty_Transparent_sk.myb b/stuff/library/mypaint brushes/kaerhon_v1/Dirty_Transparent_sk.myb new file mode 100644 index 0000000..2b878ea --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/Dirty_Transparent_sk.myb @@ -0,0 +1,249 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "Dirty_Transparent#2", + "settings": { + "anti_aliasing": { + "base_value": 0.4, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.1006289308176101, + "inputs": {} + }, + "color_s": { + "base_value": 0.2535885167464114, + "inputs": {} + }, + "color_v": { + "base_value": 0.8196078431372549, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.5, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.89, + "inputs": { + "pressure": [ + [ + 0.0, + -0.2 + ], + [ + 0.4817880794701987, + -0.002083333333333348 + ], + [ + 1.0, + 0.1 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.1, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.6, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.2600000000000714, + "inputs": { + "pressure": [ + [ + 0.0, + -2.38875 + ], + [ + 0.237952, + -1.8199999999999996 + ], + [ + 0.5, + -0.4550000000000002 + ], + [ + 0.76506, + 1.8199999999999998 + ], + [ + 1.0, + 2.73 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.93, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/Dirty_Transparent_sk_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/Dirty_Transparent_sk_prev.png new file mode 100644 index 0000000..5767f46 Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/Dirty_Transparent_sk_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/ReadMe.txt b/stuff/library/mypaint brushes/kaerhon_v1/ReadMe.txt new file mode 100644 index 0000000..c8ff7ed --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/ReadMe.txt @@ -0,0 +1,3 @@ +Kaerhon Brush Pack V1.1 + +This brush pack is licensed under the CC0. Use it as you want. diff --git a/stuff/library/mypaint brushes/kaerhon_v1/Sketcher2_sk.myb b/stuff/library/mypaint brushes/kaerhon_v1/Sketcher2_sk.myb new file mode 100644 index 0000000..3cebd48 --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/Sketcher2_sk.myb @@ -0,0 +1,321 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.6, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.08219178082191785, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 41.64, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 3.65, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.25, + 0.0 + ], + [ + 0.4133986928104575, + 0.0703125 + ], + [ + 0.5, + 0.225 + ], + [ + 0.5833333333333334, + 0.3796875 + ], + [ + 0.7026143790849673, + 0.45 + ], + [ + 1.0, + 0.45 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -1.0 + ], + [ + 0.2814569536423841, + -0.875 + ], + [ + 0.6738410596026491, + -0.46875 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.25, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.013245033112582781, + 0.5833333333333333 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.8, + "inputs": { + "pressure": [ + [ + 0.0, + -0.27083333333333326 + ], + [ + 0.17218543046357615, + 0.125 + ], + [ + 0.4652317880794702, + 0.8229166666666666 + ], + [ + 0.75, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.3, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.066667 + ], + [ + 1.0, + -0.1 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + -0.326667 + ], + [ + 0.245033, + 0.178646 + ], + [ + 1.0, + 0.49 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/Sketcher2_sk_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/Sketcher2_sk_prev.png new file mode 100644 index 0000000..a61bb50 Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/Sketcher2_sk_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/Smear_sm.myb b/stuff/library/mypaint brushes/kaerhon_v1/Smear_sm.myb new file mode 100644 index 0000000..845bc61 --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/Smear_sm.myb @@ -0,0 +1,264 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "Smear#2", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.1006289308176101, + "inputs": {} + }, + "color_s": { + "base_value": 0.2535885167464114, + "inputs": {} + }, + "color_v": { + "base_value": 0.8196078431372549, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.51, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.89, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.989583 + ], + [ + 0.38253, + -0.59375 + ], + [ + 0.656627, + 0.041667 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.011589403973509934, + 0.6041666666666667 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.5, + "inputs": { + "pressure": [ + [ + 0.0, + -1.065 + ], + [ + 0.25, + -1.065 + ], + [ + 0.5, + 0.0 + ], + [ + 0.76506, + 1.42 + ], + [ + 1.0, + 2.13 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.7, + "inputs": { + "pressure": [ + [ + 0.0, + 0.8 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.8, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/Smear_sm_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/Smear_sm_prev.png new file mode 100644 index 0000000..4756d24 Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/Smear_sm_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/airbruch_press_a.myb b/stuff/library/mypaint brushes/kaerhon_v1/airbruch_press_a.myb new file mode 100644 index 0000000..a59a197 --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/airbruch_press_a.myb @@ -0,0 +1,250 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "airbruch_press", + "settings": { + "anti_aliasing": { + "base_value": 1.39, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 0.71, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.99, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.36, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.7, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 2.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.111111, + 0.5 + ], + [ + 0.308642, + 0.833333 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 4.0, + "inputs": { + "custom": [ + [ + -2.0, + 0.45 + ], + [ + 2.0, + -0.45 + ] + ], + "pressure": [ + [ + 0.0, + -1.51 + ], + [ + 1.0, + 1.4785416666666669 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/airbruch_press_a_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/airbruch_press_a_prev.png new file mode 100644 index 0000000..c549b46 Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/airbruch_press_a_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/airsmudge_a.myb b/stuff/library/mypaint brushes/kaerhon_v1/airsmudge_a.myb new file mode 100644 index 0000000..5909fff --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/airsmudge_a.myb @@ -0,0 +1,265 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.39, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 1.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 0.71, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.99, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.36, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.175 + ], + [ + 1.0, + -0.35 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 2.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.111111, + 0.5 + ], + [ + 0.308642, + 0.833333 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 4.09, + "inputs": { + "custom": [ + [ + -2.0, + 0.45 + ], + [ + 2.0, + -0.45 + ] + ], + "pressure": [ + [ + 0.0, + -1.07 + ], + [ + 1.0, + 0.4235416666666666 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/airsmudge_a_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/airsmudge_a_prev.png new file mode 100644 index 0000000..bdfd9e8 Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/airsmudge_a_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/airsmudgeultimate_sk.myb b/stuff/library/mypaint brushes/kaerhon_v1/airsmudgeultimate_sk.myb new file mode 100644 index 0000000..bbaf477 --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/airsmudgeultimate_sk.myb @@ -0,0 +1,299 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + -0.01 + ], + [ + 0.5, + 0.01 + ], + [ + 1.0, + -0.01 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.08219178082191785, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 4.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 0.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.43, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.066667 + ], + [ + 1.0, + -0.030208 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.111111, + 0.5 + ], + [ + 0.308642, + 0.833333 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.5, + "inputs": { + "custom": [ + [ + -2.0, + 0.45 + ], + [ + 2.0, + -0.45 + ] + ], + "pressure": [ + [ + 0.0, + 2.47 + ], + [ + 1.0, + -0.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "custom": [ + [ + 0.0, + 0.94 + ], + [ + 0.648148, + 0.76375 + ], + [ + 0.833333, + 0.5875 + ], + [ + 0.916667, + 0.362292 + ], + [ + 1.0, + -0.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/airsmudgeultimate_sk_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/airsmudgeultimate_sk_prev.png new file mode 100644 index 0000000..1da355e Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/airsmudgeultimate_sk_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/classic_sk.myb b/stuff/library/mypaint brushes/kaerhon_v1/classic_sk.myb new file mode 100644 index 0000000..40a6419 --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/classic_sk.myb @@ -0,0 +1,278 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.572632944228275, + "inputs": {} + }, + "color_s": { + "base_value": 1.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.68, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.989583 + ], + [ + 0.39404, + -0.833333 + ], + [ + 0.711921, + -0.427083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.33, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.94 + ], + [ + 1.0, + 0.22520833333333334 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.066667 + ], + [ + 1.0, + -0.1 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + -0.326667 + ], + [ + 0.245033, + 0.178646 + ], + [ + 1.0, + 0.49 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/classic_sk_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/classic_sk_prev.png new file mode 100644 index 0000000..2027ea4 Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/classic_sk_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/classicroundblock_static_c.myb b/stuff/library/mypaint brushes/kaerhon_v1/classicroundblock_static_c.myb new file mode 100644 index 0000000..3f87d60 --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/classicroundblock_static_c.myb @@ -0,0 +1,267 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "classicroundblock_static#2", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.1006289308176101, + "inputs": {} + }, + "color_s": { + "base_value": 0.2535885167464114, + "inputs": {} + }, + "color_v": { + "base_value": 0.8196078431372549, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 1.14, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.989583 + ], + [ + 0.39404, + -0.833333 + ], + [ + 0.711921, + -0.427083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.29, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 4.099999999999999, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.066667 + ], + [ + 1.0, + -0.1 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + -0.326667 + ], + [ + 0.245033, + 0.178646 + ], + [ + 1.0, + 0.49 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/classicroundblock_static_c_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/classicroundblock_static_c_prev.png new file mode 100644 index 0000000..80ca14b Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/classicroundblock_static_c_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/extreme_round_l.myb b/stuff/library/mypaint brushes/kaerhon_v1/extreme_round_l.myb new file mode 100644 index 0000000..3b8d536 --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/extreme_round_l.myb @@ -0,0 +1,268 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "extreme_round#2", + "settings": { + "anti_aliasing": { + "base_value": 0.4, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.1006289308176101, + "inputs": {} + }, + "color_s": { + "base_value": 0.2535885167464114, + "inputs": {} + }, + "color_v": { + "base_value": 0.8196078431372549, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.51, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.89, + "inputs": { + "pressure": [ + [ + 0.0, + -0.2 + ], + [ + 0.4817880794701987, + -0.002083333333333348 + ], + [ + 1.0, + 0.1 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.989583 + ], + [ + 0.38253, + -0.59375 + ], + [ + 0.656627, + 0.041667 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.56, + "inputs": { + "pressure": [ + [ + 0.0, + -2.38875 + ], + [ + 0.237952, + -1.8199999999999996 + ], + [ + 0.5, + -0.4550000000000002 + ], + [ + 0.76506, + 1.8199999999999998 + ], + [ + 1.0, + 2.73 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.93, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/extreme_round_l_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/extreme_round_l_prev.png new file mode 100644 index 0000000..d3122e4 Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/extreme_round_l_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/fill_c.myb b/stuff/library/mypaint brushes/kaerhon_v1/fill_c.myb new file mode 100644 index 0000000..dd36501 --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/fill_c.myb @@ -0,0 +1,237 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "fill#2", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.1006289308176101, + "inputs": {} + }, + "color_s": { + "base_value": 0.2535885167464114, + "inputs": {} + }, + "color_v": { + "base_value": 0.8196078431372549, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 1.14, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.9, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 2.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.23, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.0, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.066667 + ], + [ + 1.0, + -0.1 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + -0.326667 + ], + [ + 0.245033, + 0.178646 + ], + [ + 1.0, + 0.49 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/fill_c_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/fill_c_prev.png new file mode 100644 index 0000000..25df6b6 Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/fill_c_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/flat_bar_l.myb b/stuff/library/mypaint brushes/kaerhon_v1/flat_bar_l.myb new file mode 100644 index 0000000..f6a2a44 --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/flat_bar_l.myb @@ -0,0 +1,279 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "flat_bar", + "settings": { + "anti_aliasing": { + "base_value": 1.1, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 4.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 1.5, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 1.5, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 5.8, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.69, + "inputs": { + "pressure": [ + [ + 0.0, + -0.2 + ], + [ + 0.4817880794701987, + -0.002083333333333348 + ], + [ + 1.0, + 0.1 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.989583 + ], + [ + 0.38253, + -0.59375 + ], + [ + 0.656627, + 0.041667 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.05999999999999994, + "inputs": { + "pressure": [ + [ + 0.0, + -2.38875 + ], + [ + 0.20695364238410596, + -2.0759375 + ], + [ + 0.478476821192053, + 0.6825 + ], + [ + 0.75, + 2.73 + ], + [ + 1.0, + 2.73 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.93, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/flat_bar_l_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/flat_bar_l_prev.png new file mode 100644 index 0000000..e994970 Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/flat_bar_l_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/ink-slowline_s.myb b/stuff/library/mypaint brushes/kaerhon_v1/ink-slowline_s.myb new file mode 100644 index 0000000..a8539eb --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/ink-slowline_s.myb @@ -0,0 +1,270 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.6, + "inputs": { + "pressure": [ + [ + 0.0, + -0.16041666666666668 + ], + [ + 1.0, + 0.32083333333333336 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.5, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.08999999999999975, + "inputs": { + "pressure": [ + [ + 0.0, + -0.6075 + ], + [ + 1.0, + 1.215 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 5.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.066667 + ], + [ + 1.0, + -0.1 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + -0.326667 + ], + [ + 0.245033, + 0.178646 + ], + [ + 1.0, + 0.49 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 3.0, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/ink-slowline_s_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/ink-slowline_s_prev.png new file mode 100644 index 0000000..4377bd0 Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/ink-slowline_s_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/ink_slow_s.myb b/stuff/library/mypaint brushes/kaerhon_v1/ink_slow_s.myb new file mode 100644 index 0000000..c477434 --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/ink_slow_s.myb @@ -0,0 +1,278 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.00784313725490196, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.59, + "inputs": { + "pressure": [ + [ + 0.0, + -0.4 + ], + [ + 0.24172185430463577, + -0.24583333333333332 + ], + [ + 0.6225165562913907, + -0.016666666666666698 + ], + [ + 1.0, + 0.32083333333333336 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.5, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.9999999999999998, + "inputs": { + "pressure": [ + [ + 0.0, + -2.52 + ], + [ + 1.0, + 1.26 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 4.83, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.066667 + ], + [ + 1.0, + -0.1 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + -0.326667 + ], + [ + 0.245033, + 0.178646 + ], + [ + 1.0, + 0.49 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 3.0, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/ink_slow_s_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/ink_slow_s_prev.png new file mode 100644 index 0000000..324befd Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/ink_slow_s_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/inkster_l.myb b/stuff/library/mypaint brushes/kaerhon_v1/inkster_l.myb new file mode 100644 index 0000000..9f6c7d1 --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/inkster_l.myb @@ -0,0 +1,265 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "inkster#2", + "settings": { + "anti_aliasing": { + "base_value": 1.2, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.1006289308176101, + "inputs": {} + }, + "color_s": { + "base_value": 0.2535885167464114, + "inputs": {} + }, + "color_v": { + "base_value": 0.8196078431372549, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.51, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.79, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.7916666666666667 + ], + [ + 0.11258278145695365, + -0.7604166666666667 + ], + [ + 0.3294701986754967, + -0.45833333333333326 + ], + [ + 0.5082781456953642, + -0.15625 + ], + [ + 0.75, + 0.0 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.011589403973509934, + 0.6041666666666667 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.1357615894039735, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.66, + "inputs": { + "pressure": [ + [ + 0.0, + -0.7543749999999999 + ], + [ + 0.04966887417218543, + -0.68365234375 + ], + [ + 0.1291390728476821, + -0.03929036458333327 + ], + [ + 0.32450331125827814, + 0.45576822916666665 + ], + [ + 0.6076158940397351, + 0.7072265624999999 + ], + [ + 1.0, + 0.7543749999999999 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 1.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.8, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/inkster_l_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/inkster_l_prev.png new file mode 100644 index 0000000..5ab7480 Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/inkster_l_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/paint_barrr_sm.myb b/stuff/library/mypaint brushes/kaerhon_v1/paint_barrr_sm.myb new file mode 100644 index 0000000..bd179d8 --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/paint_barrr_sm.myb @@ -0,0 +1,267 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "paint_barrr#2", + "settings": { + "anti_aliasing": { + "base_value": 3.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.1006289308176101, + "inputs": {} + }, + "color_s": { + "base_value": 0.2535885167464114, + "inputs": {} + }, + "color_v": { + "base_value": 0.8196078431372549, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 0.89, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 5.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.9, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.989583 + ], + [ + 0.39404, + -0.833333 + ], + [ + 0.711921, + -0.427083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.0, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.75, + "inputs": { + "pressure": [ + [ + 0.0, + 0.7 + ], + [ + 1.0, + -0.7 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + -0.326667 + ], + [ + 0.245033, + 0.178646 + ], + [ + 1.0, + 0.49 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/paint_barrr_sm_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/paint_barrr_sm_prev.png new file mode 100644 index 0000000..b76cc03 Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/paint_barrr_sm_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/paint_radius_2_sm.myb b/stuff/library/mypaint brushes/kaerhon_v1/paint_radius_2_sm.myb new file mode 100644 index 0000000..00542f5 --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/paint_radius_2_sm.myb @@ -0,0 +1,286 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "paint_radius_2#2", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.1006289308176101, + "inputs": {} + }, + "color_s": { + "base_value": 0.2535885167464114, + "inputs": {} + }, + "color_v": { + "base_value": 0.8196078431372549, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 0.89, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.9, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.989583 + ], + [ + 0.39404, + -0.833333 + ], + [ + 0.711921, + -0.427083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.4000000000000004, + "inputs": { + "pressure": [ + [ + 0.0, + 0.37239583333333326 + ], + [ + 0.3658940397350993, + 0.19466145833333326 + ], + [ + 0.6887417218543046, + -0.16080729166666663 + ], + [ + 1.0, + -0.8125 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.75, + "inputs": { + "pressure": [ + [ + 0.0, + 0.7 + ], + [ + 1.0, + -0.7 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + -0.326667 + ], + [ + 0.245033, + 0.178646 + ], + [ + 1.0, + 0.49 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/paint_radius_2_sm_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/paint_radius_2_sm_prev.png new file mode 100644 index 0000000..c430790 Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/paint_radius_2_sm_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/paint_sm.myb b/stuff/library/mypaint brushes/kaerhon_v1/paint_sm.myb new file mode 100644 index 0000000..c54d121 --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/paint_sm.myb @@ -0,0 +1,275 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "paint#2", + "settings": { + "anti_aliasing": { + "base_value": 3.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.1006289308176101, + "inputs": {} + }, + "color_s": { + "base_value": 0.2535885167464114, + "inputs": {} + }, + "color_v": { + "base_value": 0.8196078431372549, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 0.89, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.9, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.989583 + ], + [ + 0.39404, + -0.833333 + ], + [ + 0.711921, + -0.427083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.0, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.75, + "inputs": { + "pressure": [ + [ + 0.0, + 0.7 + ], + [ + 0.35927152317880795, + 0.48124999999999996 + ], + [ + 0.7019867549668874, + 0.029166666666666716 + ], + [ + 1.0, + -0.7 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + -0.326667 + ], + [ + 0.245033, + 0.178646 + ], + [ + 1.0, + 0.49 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/paint_sm_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/paint_sm_prev.png new file mode 100644 index 0000000..b73a0ae Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/paint_sm_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/smudge_ink(0.7)_sm.myb b/stuff/library/mypaint brushes/kaerhon_v1/smudge_ink(0.7)_sm.myb new file mode 100644 index 0000000..c989fe5 --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/smudge_ink(0.7)_sm.myb @@ -0,0 +1,253 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "smudge_ink(0.7)#3", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.1006289308176101, + "inputs": {} + }, + "color_s": { + "base_value": 0.2535885167464114, + "inputs": {} + }, + "color_v": { + "base_value": 0.8196078431372549, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.51, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.89, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.989583 + ], + [ + 0.38253, + -0.59375 + ], + [ + 0.656627, + 0.041667 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.26, + "inputs": { + "pressure": [ + [ + 0.0, + -1.86375 + ], + [ + 0.237952, + -1.42 + ], + [ + 0.5, + -0.355 + ], + [ + 0.76506, + 1.42 + ], + [ + 1.0, + 2.13 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.69, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.93, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/smudge_ink(0.7)_sm_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/smudge_ink(0.7)_sm_prev.png new file mode 100644 index 0000000..5bd8a44 Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/smudge_ink(0.7)_sm_prev.png differ diff --git a/stuff/library/mypaint brushes/kaerhon_v1/wet_paint_sm.myb b/stuff/library/mypaint brushes/kaerhon_v1/wet_paint_sm.myb new file mode 100644 index 0000000..c4fad9d --- /dev/null +++ b/stuff/library/mypaint brushes/kaerhon_v1/wet_paint_sm.myb @@ -0,0 +1,253 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "wet_paint#2", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.1006289308176101, + "inputs": {} + }, + "color_s": { + "base_value": 0.2535885167464114, + "inputs": {} + }, + "color_v": { + "base_value": 0.8196078431372549, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.51, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.89, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.989583 + ], + [ + 0.38253, + -0.59375 + ], + [ + 0.656627, + 0.041667 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.011589403973509934, + 0.6041666666666667 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "pressure_gain_log": { + "base_value": 0.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.5, + "inputs": { + "pressure": [ + [ + 0.0, + -1.86375 + ], + [ + 0.237952, + -1.42 + ], + [ + 0.5, + -0.355 + ], + [ + 0.76506, + 1.42 + ], + [ + 1.0, + 2.13 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.7, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.8, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/kaerhon_v1/wet_paint_sm_prev.png b/stuff/library/mypaint brushes/kaerhon_v1/wet_paint_sm_prev.png new file mode 100644 index 0000000..ded71b9 Binary files /dev/null and b/stuff/library/mypaint brushes/kaerhon_v1/wet_paint_sm_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/100%_Opaque.myb b/stuff/library/mypaint brushes/ramon/100%_Opaque.myb new file mode 100644 index 0000000..72c9ef3 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/100%_Opaque.myb @@ -0,0 +1,199 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/100%_Opaque", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 2.18, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.95, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.025, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.01, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.65, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.8, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 1.18, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/100%_Opaque_prev.png b/stuff/library/mypaint brushes/ramon/100%_Opaque_prev.png new file mode 100644 index 0000000..6b4b816 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/100%_Opaque_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/2B_pencil.myb b/stuff/library/mypaint brushes/ramon/2B_pencil.myb new file mode 100644 index 0000000..28dd91f --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/2B_pencil.myb @@ -0,0 +1,229 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.374799357945, + "inputs": {} + }, + "color_s": { + "base_value": 0.00966206051583, + "inputs": {} + }, + "color_v": { + "base_value": 0.983886472877, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.12, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 1.22, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.141176, + -0.145833 + ], + [ + 0.255882, + -0.335417 + ], + [ + 0.332353, + -0.546875 + ], + [ + 0.361765, + -0.7 + ], + [ + 1.0, + -0.7 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.4, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.4 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.4, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/2B_pencil_prev.png b/stuff/library/mypaint brushes/ramon/2B_pencil_prev.png new file mode 100644 index 0000000..6020ae9 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/2B_pencil_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/B-pencil.myb b/stuff/library/mypaint brushes/ramon/B-pencil.myb new file mode 100644 index 0000000..daf65ac --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/B-pencil.myb @@ -0,0 +1,249 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.374799357945, + "inputs": {} + }, + "color_s": { + "base_value": 0.00966206051583, + "inputs": {} + }, + "color_v": { + "base_value": 0.983886472877, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 3.57, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 3.54, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.56, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.23, + "inputs": { + "pressure": [ + [ + 0.0, + 0.083333 + ], + [ + 0.126471, + 0.25 + ], + [ + 0.258824, + 0.0 + ], + [ + 0.308824, + -2.0 + ], + [ + 1.0, + -2.0 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.7, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.45, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.35, + "inputs": { + "pressure": [ + [ + 0.0, + -0.381902 + ], + [ + 0.36, + -0.151082 + ], + [ + 0.54, + 0.092328 + ], + [ + 0.713333, + 0.381902 + ], + [ + 1.0, + 0.402886 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.32, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.76, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.170588, + 0.234792 + ], + [ + 0.335294, + -0.173542 + ], + [ + 0.773529, + -0.255208 + ], + [ + 1.0, + -0.653333 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.1, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/B-pencil_prev.png b/stuff/library/mypaint brushes/ramon/B-pencil_prev.png new file mode 100644 index 0000000..d5ad20e Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/B-pencil_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Beamlight.myb b/stuff/library/mypaint brushes/ramon/Beamlight.myb new file mode 100644 index 0000000..598c358 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Beamlight.myb @@ -0,0 +1,241 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/Beamlight", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": -0.01, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.184524, + 0.063437 + ], + [ + 0.357143, + 0.163125 + ], + [ + 0.53869, + 0.462187 + ], + [ + 0.651786, + 0.87 + ], + [ + 1.0, + 0.860938 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.35, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 6.63, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.14, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.05, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.5, + 0.479167 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.39, + "inputs": { + "pressure": [ + [ + 0.0, + 2.066667 + ], + [ + 1.0, + -3.1 + ], + [ + 1.0, + -3.1 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.6, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 0.28, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.09, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.69, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 1.18, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Beamlight_prev.png b/stuff/library/mypaint brushes/ramon/Beamlight_prev.png new file mode 100644 index 0000000..a78f1ab Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Beamlight_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/BigAirbrush.myb b/stuff/library/mypaint brushes/ramon/BigAirbrush.myb new file mode 100644 index 0000000..b99688f --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/BigAirbrush.myb @@ -0,0 +1,210 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/BigAirbrush", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 1.98, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.41, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.4, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.68, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.59, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.02381, + 1.924271 + ], + [ + 0.758824, + 0.0 + ], + [ + 1.0, + -1.483292 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 0.14, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.31, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/BigAirbrush_prev.png b/stuff/library/mypaint brushes/ramon/BigAirbrush_prev.png new file mode 100644 index 0000000..8ee9146 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/BigAirbrush_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Blur_Fast.myb b/stuff/library/mypaint brushes/ramon/Blur_Fast.myb new file mode 100644 index 0000000..bc84f82 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Blur_Fast.myb @@ -0,0 +1,202 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/Blur_Fast", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.53, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.4 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.15, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.5, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Blur_Fast_prev.png b/stuff/library/mypaint brushes/ramon/Blur_Fast_prev.png new file mode 100644 index 0000000..34a33a0 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Blur_Fast_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Classic_Paint.myb b/stuff/library/mypaint brushes/ramon/Classic_Paint.myb new file mode 100644 index 0000000..18f2974 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Classic_Paint.myb @@ -0,0 +1,273 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/Classic_Paint", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 2.09, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 3.1, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 0.47, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 5.19, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.95, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.223214, + 0.28125 + ], + [ + 0.425595, + 0.677083 + ], + [ + 0.720238, + 0.9375 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.6, + "inputs": { + "custom": [ + [ + -2.0, + 1.38 + ], + [ + 2.0, + -1.38 + ] + ], + "pressure": [ + [ + 0.0, + -1.484375 + ], + [ + 0.408824, + 0.0 + ], + [ + 0.726471, + 0.59375 + ], + [ + 1.0, + 1.5 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.666667 + ], + [ + 0.25, + 0.052083 + ], + [ + 0.464286, + -0.333333 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.02, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Classic_Paint_prev.png b/stuff/library/mypaint brushes/ramon/Classic_Paint_prev.png new file mode 100644 index 0000000..8db33ce Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Classic_Paint_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Clouds.myb b/stuff/library/mypaint brushes/ramon/Clouds.myb new file mode 100644 index 0000000..4f80061 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Clouds.myb @@ -0,0 +1,273 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/Clouds", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 0.17, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.17, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 1.42, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.23, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015823, + 2.050417 + ], + [ + 0.265823, + 2.050417 + ], + [ + 0.471519, + 0.0 + ], + [ + 1.0, + 0.0 + ] + ], + "speed2": [ + [ + 0.0, + 0.0 + ], + [ + 0.28481, + -1.246667 + ], + [ + 1.0, + 1.36 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.51, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.57, + "inputs": { + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 0.817901, + 1.659167 + ], + [ + 0.910494, + 1.81 + ], + [ + 1.0, + 1.81 + ] + ], + "speed2": [ + [ + 0.0, + 0.0 + ], + [ + 0.074074, + -0.255208 + ], + [ + 0.490741, + 0.0 + ], + [ + 0.611111, + 0.583333 + ], + [ + 0.867284, + 0.7 + ], + [ + 1.0, + 0.7 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 0.14, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.31, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Clouds_prev.png b/stuff/library/mypaint brushes/ramon/Clouds_prev.png new file mode 100644 index 0000000..b481ce7 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Clouds_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Delayed_.myb b/stuff/library/mypaint brushes/ramon/Delayed_.myb new file mode 100644 index 0000000..ef5edd5 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Delayed_.myb @@ -0,0 +1,249 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/Delayed_", + "settings": { + "anti_aliasing": { + "base_value": 0.7, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.82, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.51, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 70.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.989583 + ], + [ + 0.38253, + -0.59375 + ], + [ + 0.656627, + 0.041667 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -2.13 + ], + [ + 0.237952, + -1.42 + ], + [ + 0.341176, + -1.065 + ], + [ + 0.5, + -0.355 + ], + [ + 0.76506, + 1.42 + ], + [ + 1.0, + 2.13 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 10.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 8.2, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Delayed__prev.png b/stuff/library/mypaint brushes/ramon/Delayed__prev.png new file mode 100644 index 0000000..f75c3f6 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Delayed__prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Dirty_Noise.myb b/stuff/library/mypaint brushes/ramon/Dirty_Noise.myb new file mode 100644 index 0000000..d27ba17 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Dirty_Noise.myb @@ -0,0 +1,299 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/Dirty_Noise", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": { + "random": [ + [ + 0.0, + -3.81 + ], + [ + 1.0, + 3.81 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.214706, + 0.0 + ], + [ + 0.808824, + 1.6875 + ], + [ + 1.0, + 2.0 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.62963, + 0.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.029412, + 0.9375 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.19, + "inputs": { + "pressure": [ + [ + 0.0, + 0.916667 + ], + [ + 0.255882, + 0.0 + ], + [ + 0.5, + 0.0 + ], + [ + 0.747059, + -1.595 + ], + [ + 1.0, + -1.76 + ] + ], + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.54321, + -1.82 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 1.47, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -1.55 + ] + ] + } + }, + "stroke_holdtime": { + "base_value": 1.44, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 2.09, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Dirty_Noise_prev.png b/stuff/library/mypaint brushes/ramon/Dirty_Noise_prev.png new file mode 100644 index 0000000..7bc0a2e Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Dirty_Noise_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Glow_Airbrush.myb b/stuff/library/mypaint brushes/ramon/Glow_Airbrush.myb new file mode 100644 index 0000000..9e8bbff --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Glow_Airbrush.myb @@ -0,0 +1,263 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/Glow_Airbrush", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.070313 + ], + [ + 0.552941, + 0.031875 + ], + [ + 1.0, + 0.09 + ] + ] + } + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.62 + ] + ] + } + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": -0.01, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.447059, + 0.147292 + ], + [ + 0.588235, + 0.347187 + ], + [ + 0.735294, + 0.599688 + ], + [ + 0.844118, + 1.01 + ], + [ + 1.0, + 0.99948 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.35, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 6.63, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.14, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.308641975309, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.05, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.5, + 0.479167 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 4.75, + "inputs": { + "pressure": [ + [ + 0.0, + 0.586667 + ], + [ + 1.0, + -0.88 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.6, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 0.28, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.09, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.69, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 1.18, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Glow_Airbrush_prev.png b/stuff/library/mypaint brushes/ramon/Glow_Airbrush_prev.png new file mode 100644 index 0000000..2ab7392 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Glow_Airbrush_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Grain.myb b/stuff/library/mypaint brushes/ramon/Grain.myb new file mode 100644 index 0000000..650eb09 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Grain.myb @@ -0,0 +1,232 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/Grain", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 10.0, + "inputs": { + "random": [ + [ + 0.0, + -1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.1, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 1.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.648, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.75 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.064815, + 0.666667 + ], + [ + 0.135802, + 0.927083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.3, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Grain_prev.png b/stuff/library/mypaint brushes/ramon/Grain_prev.png new file mode 100644 index 0000000..1a5e999 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Grain_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Hard_Eraser.myb b/stuff/library/mypaint brushes/ramon/Hard_Eraser.myb new file mode 100644 index 0000000..1c35b98 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Hard_Eraser.myb @@ -0,0 +1,243 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/Hard_Eraser", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 1.37, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 2.44, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 1.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.9, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.05 + ] + ], + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.09 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.025, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.5, + "inputs": { + "pressure": [ + [ + 0.0, + -2.325 + ], + [ + 0.452941, + 0.1 + ], + [ + 0.641176, + 0.325 + ], + [ + 0.820588, + 0.85 + ], + [ + 1.0, + 2.4 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 3.66, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.8, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Hard_Eraser_prev.png b/stuff/library/mypaint brushes/ramon/Hard_Eraser_prev.png new file mode 100644 index 0000000..2134b1e Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Hard_Eraser_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Knife.myb b/stuff/library/mypaint brushes/ramon/Knife.myb new file mode 100644 index 0000000..6c16579 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Knife.myb @@ -0,0 +1,232 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/Knife", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 0.71, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.95, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.99, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 6.52, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.117284, + 0.635417 + ], + [ + 0.330247, + 0.9375 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.11, + "inputs": { + "pressure": [ + [ + 0.0, + -1.6 + ], + [ + 1.0, + 2.4 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Knife_prev.png b/stuff/library/mypaint brushes/ramon/Knife_prev.png new file mode 100644 index 0000000..c9bf0e3 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Knife_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Marker.myb b/stuff/library/mypaint brushes/ramon/Marker.myb new file mode 100644 index 0000000..98dbc69 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Marker.myb @@ -0,0 +1,313 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.874938453964, + "inputs": {} + }, + "color_s": { + "base_value": 0.990248659191, + "inputs": {} + }, + "color_v": { + "base_value": 0.0312962539101, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 5.46, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.05 + ] + ], + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.09 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.74, + "inputs": { + "pressure": [ + [ + 0.0, + -0.5 + ], + [ + 0.213855, + -0.458333 + ], + [ + 0.343373, + -0.307291 + ], + [ + 0.448795, + 0.020833 + ], + [ + 0.533133, + 0.421875 + ], + [ + 0.728916, + 0.5 + ], + [ + 0.873494, + 0.5 + ], + [ + 1.0, + 0.5 + ] + ], + "speed1": [ + [ + 0.0, + 0.947917 + ], + [ + 0.614458, + 0.34375 + ], + [ + 1.53012, + -0.135417 + ], + [ + 2.481928, + -0.489583 + ], + [ + 3.325301, + -0.885417 + ], + [ + 4.0, + -1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.015, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.32, + "inputs": { + "pressure": [ + [ + 0.0, + -0.398646 + ], + [ + 1.0, + 0.43 + ] + ], + "speed1": [ + [ + 0.0, + 0.118646 + ], + [ + 1.0, + -0.17 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.8, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Marker_prev.png b/stuff/library/mypaint brushes/ramon/Marker_prev.png new file mode 100644 index 0000000..804051f Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Marker_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/P._Shade.myb b/stuff/library/mypaint brushes/ramon/P._Shade.myb new file mode 100644 index 0000000..3b169a8 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/P._Shade.myb @@ -0,0 +1,233 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.874938453964, + "inputs": {} + }, + "color_s": { + "base_value": 0.990248659191, + "inputs": {} + }, + "color_v": { + "base_value": 0.0312962539101, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.69, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 3.93, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 5.07, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.2, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 2.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -2.0 + ] + ], + "speed1": [ + [ + 0.0, + -0.25 + ], + [ + 4.0, + 1.75 + ] + ], + "speed2": [ + [ + 0.0, + -0.25 + ], + [ + 4.0, + 1.75 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.123456790123, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.4 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.28, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.06, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/P._Shade_prev.png b/stuff/library/mypaint brushes/ramon/P._Shade_prev.png new file mode 100644 index 0000000..baa2b19 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/P._Shade_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Pastel_1.myb b/stuff/library/mypaint brushes/ramon/Pastel_1.myb new file mode 100644 index 0000000..63e9ad5 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Pastel_1.myb @@ -0,0 +1,261 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/Pastel_1", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.4980392156862745, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 3.57, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 3.54, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.48, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": { + "pressure": [ + [ + 0.0, + -0.666667 + ], + [ + 0.426471, + 0.052083 + ], + [ + 0.755882, + 0.072917 + ], + [ + 0.844118, + 0.947917 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.435294, + -0.041667 + ], + [ + 0.753425, + -0.6875 + ], + [ + 1.0, + 0.0 + ] + ], + "speed1": [ + [ + 0.0, + -0.285714 + ], + [ + 4.0, + 2.0 + ] + ], + "speed2": [ + [ + 0.0, + -0.285714 + ], + [ + 4.0, + 2.0 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.45, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.48, + "inputs": { + "pressure": [ + [ + 0.0, + -0.3125 + ], + [ + 0.0701219512195122, + -0.10416666666666674 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 1.08, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.71, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.1, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "snap_to_pixel": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Pastel_1_prev.png b/stuff/library/mypaint brushes/ramon/Pastel_1_prev.png new file mode 100644 index 0000000..d489cd9 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Pastel_1_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Pen.myb b/stuff/library/mypaint brushes/ramon/Pen.myb new file mode 100644 index 0000000..74de6b0 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Pen.myb @@ -0,0 +1,214 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.845694888549, + "inputs": {} + }, + "color_s": { + "base_value": 0.818968461801, + "inputs": {} + }, + "color_v": { + "base_value": 0.268039978637, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 2.18, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 15.82, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.6, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.85, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.111765, + 0.958333 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.14, + "inputs": { + "speed1": [ + [ + 0.0, + 0.117142 + ], + [ + 1.564706, + -0.264792 + ], + [ + 4.0, + -0.82 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 1.18, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/PenBrush.myb b/stuff/library/mypaint brushes/ramon/PenBrush.myb new file mode 100644 index 0000000..2f54ef4 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/PenBrush.myb @@ -0,0 +1,245 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/PenBrush", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.51, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.89, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.989583 + ], + [ + 0.38253, + -0.59375 + ], + [ + 0.656627, + 0.041667 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.069277, + 0.9375 + ], + [ + 0.25, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.26, + "inputs": { + "pressure": [ + [ + 0.0, + -1.86375 + ], + [ + 0.237952, + -1.42 + ], + [ + 0.5, + -0.355 + ], + [ + 0.76506, + 1.42 + ], + [ + 1.0, + 2.13 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 4.55, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.87, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/PenBrush_prev.png b/stuff/library/mypaint brushes/ramon/PenBrush_prev.png new file mode 100644 index 0000000..61e9f39 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/PenBrush_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Pen_prev.png b/stuff/library/mypaint brushes/ramon/Pen_prev.png new file mode 100644 index 0000000..8d92608 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Pen_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/RS_blendOP.myb b/stuff/library/mypaint brushes/ramon/RS_blendOP.myb new file mode 100644 index 0000000..a895ba8 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/RS_blendOP.myb @@ -0,0 +1,289 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/RS_blendOP", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 2.09, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.29, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 0.44, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -6.0 + ], + [ + 0.411765, + 0.5625 + ], + [ + 0.467647, + 7.3125 + ], + [ + 1.0, + 9.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.93, + "inputs": { + "pressure": [ + [ + 0.0, + -0.666667 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.324405, + 0.322917 + ], + [ + 0.52381, + 0.635417 + ], + [ + 0.776786, + 0.885417 + ], + [ + 1.0, + 0.927083 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.82, + "inputs": { + "pressure": [ + [ + 0.0, + 0.049375 + ], + [ + 1.0, + -0.79 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.142857, + 1.0 + ], + [ + 0.345238, + 1.0 + ], + [ + 0.422619, + 0.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.85, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/RS_blendOP_prev.png b/stuff/library/mypaint brushes/ramon/RS_blendOP_prev.png new file mode 100644 index 0000000..e25ab51 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/RS_blendOP_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Round.myb b/stuff/library/mypaint brushes/ramon/Round.myb new file mode 100644 index 0000000..6cbff10 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Round.myb @@ -0,0 +1,260 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/Round", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 4.02, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "speed2": [ + [ + 0.0, + 0.28 + ], + [ + 0.518519, + 0.032083 + ], + [ + 1.888889, + -0.16625 + ], + [ + 4.0, + -0.28 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.52 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.3, + "inputs": { + "pressure": [ + [ + 0.0, + 0.326667 + ], + [ + 1.0, + -0.49 + ] + ], + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.75 + ] + ], + "speed2": [ + [ + 0.0, + -0.15 + ], + [ + 4.0, + 1.05 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.290123, + -0.0375 + ], + [ + 0.645062, + -0.15 + ], + [ + 1.0, + -0.4 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 1.24, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.1, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.61, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Round_Bl.myb b/stuff/library/mypaint brushes/ramon/Round_Bl.myb new file mode 100644 index 0000000..8b17f66 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Round_Bl.myb @@ -0,0 +1,292 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/Round_Bl", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + -0.01 + ], + [ + 0.5, + 0.01 + ], + [ + 1.0, + -0.01 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 0.71, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.75, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 0.58, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.85, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.405882, + 0.15625 + ], + [ + 0.5, + 0.572917 + ], + [ + 0.664706, + 0.8125 + ], + [ + 0.844118, + 0.947917 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.01, + "inputs": { + "custom": [ + [ + -2.0, + 0.45 + ], + [ + 2.0, + -0.45 + ] + ], + "pressure": [ + [ + 0.0, + -0.466667 + ], + [ + 1.0, + 0.7 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.51, + "inputs": { + "custom": [ + [ + 0.0, + 0.949375 + ], + [ + 0.414706, + 0.42875 + ], + [ + 0.620588, + 0.142917 + ], + [ + 0.708824, + -0.18375 + ], + [ + 0.8, + -0.98 + ], + [ + 1.0, + -0.98 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Round_Bl_prev.png b/stuff/library/mypaint brushes/ramon/Round_Bl_prev.png new file mode 100644 index 0000000..656f5c7 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Round_Bl_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Round_prev.png b/stuff/library/mypaint brushes/ramon/Round_prev.png new file mode 100644 index 0000000..b5ba663 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Round_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Sketch_1.myb b/stuff/library/mypaint brushes/ramon/Sketch_1.myb new file mode 100644 index 0000000..3c263a6 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Sketch_1.myb @@ -0,0 +1,218 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/Sketch_1", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 3.57, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 3.54, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 2.0, + "inputs": { + "pressure": [ + [ + 0.0, + 2.0 + ], + [ + 0.160714, + 1.583333 + ], + [ + 0.28869, + 0.708333 + ], + [ + 0.440476, + -2.0 + ], + [ + 1.0, + -2.0 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.45, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.34, + "inputs": { + "pressure": [ + [ + 0.0, + -0.666667 + ], + [ + 0.404762, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.88, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.39, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.1, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Sketch_1_prev.png b/stuff/library/mypaint brushes/ramon/Sketch_1_prev.png new file mode 100644 index 0000000..55ee798 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Sketch_1_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Smear.myb b/stuff/library/mypaint brushes/ramon/Smear.myb new file mode 100644 index 0000000..e636403 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Smear.myb @@ -0,0 +1,232 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/Smear", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.2, + "inputs": { + "pressure": [ + [ + 0.0, + -0.697917 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.2 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.4, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.35, + "inputs": { + "pressure": [ + [ + 0.0, + -0.66 + ], + [ + 0.417647, + 0.0 + ], + [ + 0.782353, + 0.391875 + ], + [ + 1.0, + 0.99 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Smear_prev.png b/stuff/library/mypaint brushes/ramon/Smear_prev.png new file mode 100644 index 0000000..57b1e1e Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Smear_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Soft_Eraser.myb b/stuff/library/mypaint brushes/ramon/Soft_Eraser.myb new file mode 100644 index 0000000..524075b --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Soft_Eraser.myb @@ -0,0 +1,206 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.00358587014572, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 1.22, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 1.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.5, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.06, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.56, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.11 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.0, + "inputs": { + "pressure": [ + [ + 0.0, + 1.24375 + ], + [ + 0.405882, + 1.181563 + ], + [ + 1.0, + 1.99 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Soft_Eraser_prev.png b/stuff/library/mypaint brushes/ramon/Soft_Eraser_prev.png new file mode 100644 index 0000000..b15ecba Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Soft_Eraser_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Thin_Pen.myb b/stuff/library/mypaint brushes/ramon/Thin_Pen.myb new file mode 100644 index 0000000..79ac72a --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Thin_Pen.myb @@ -0,0 +1,249 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.845694888549, + "inputs": {} + }, + "color_s": { + "base_value": 0.818968461801, + "inputs": {} + }, + "color_v": { + "base_value": 0.268039978637, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.2, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 2.18, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 3.75, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.43, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "speed1": [ + [ + 0.0, + 0.48 + ], + [ + 1.023529, + 0.35 + ], + [ + 1.788235, + 0.18 + ], + [ + 2.635294, + -0.115 + ], + [ + 3.564706, + -0.36 + ], + [ + 4.0, + -0.48 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.85, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.015, + 0.0 + ], + [ + 0.111765, + 0.958333 + ], + [ + 0.435294, + 0.864583 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.08, + "inputs": { + "speed1": [ + [ + 0.0, + -0.248354 + ], + [ + 1.068493, + -0.482911 + ], + [ + 2.287671, + -1.076202 + ], + [ + 4.0, + -1.09 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 2.67, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.05, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 1.18, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Thin_Pen_prev.png b/stuff/library/mypaint brushes/ramon/Thin_Pen_prev.png new file mode 100644 index 0000000..f1f5bca Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Thin_Pen_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/Wet_Direction.myb b/stuff/library/mypaint brushes/ramon/Wet_Direction.myb new file mode 100644 index 0000000..e500a03 --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/Wet_Direction.myb @@ -0,0 +1,224 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/Wet_Direction", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.99, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 3.72, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.5, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.37, + "inputs": { + "custom": [ + [ + -2.0, + -3.66 + ], + [ + 2.0, + 3.66 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.51, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.26, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/Wet_Direction_prev.png b/stuff/library/mypaint brushes/ramon/Wet_Direction_prev.png new file mode 100644 index 0000000..45955c4 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/Wet_Direction_prev.png differ diff --git a/stuff/library/mypaint brushes/ramon/wet_round.myb b/stuff/library/mypaint brushes/ramon/wet_round.myb new file mode 100644 index 0000000..924424b --- /dev/null +++ b/stuff/library/mypaint brushes/ramon/wet_round.myb @@ -0,0 +1,244 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "ramon/wet_round", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.05, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 0.35, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.95, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.666667 + ], + [ + 0.313253, + -0.166667 + ], + [ + 0.575301, + 0.229167 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.222222, + 0.0 + ], + [ + 0.454819, + 0.538125 + ], + [ + 1.0, + 0.63 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.07, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 1.0 + ], + [ + 0.401786, + 0.96875 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.12, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/ramon/wet_round_prev.png b/stuff/library/mypaint brushes/ramon/wet_round_prev.png new file mode 100644 index 0000000..b08d722 Binary files /dev/null and b/stuff/library/mypaint brushes/ramon/wet_round_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/acrylic-03-only-water.myb b/stuff/library/mypaint brushes/tanda/acrylic-03-only-water.myb new file mode 100644 index 0000000..94c2398 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/acrylic-03-only-water.myb @@ -0,0 +1,298 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/acrylic-03-only-water", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 10.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 0.737654, + -0.0 + ], + [ + 1.0, + -9.0 + ] + ], + "speed1": [ + [ + 0.0, + -7.0 + ], + [ + 4.0, + 7.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.740741, + 0.0 + ], + [ + 1.0, + 0.05 + ] + ] + } + }, + "hardness": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 0.401235, + -0.0 + ], + [ + 1.0, + -0.45 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.746914, + 0.0 + ], + [ + 1.0, + 0.45 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.9, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.75, + 0.0 + ], + [ + 1.0, + 1.1 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 5.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.1, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 2.8, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/acrylic-03-only-water_prev.png b/stuff/library/mypaint brushes/tanda/acrylic-03-only-water_prev.png new file mode 100644 index 0000000..7e2df05 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/acrylic-03-only-water_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/acrylic-03-paint.myb b/stuff/library/mypaint brushes/tanda/acrylic-03-paint.myb new file mode 100644 index 0000000..e36fa0d --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/acrylic-03-paint.myb @@ -0,0 +1,279 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/acrylic-03-paint", + "settings": { + "anti_aliasing": { + "base_value": 0.63, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + -0.01 + ], + [ + 1.0, + 0.01 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 10.0, + "inputs": { + "speed1": [ + [ + 0.0, + -8.5 + ], + [ + 4.0, + 8.5 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.049383, + 0.572917 + ], + [ + 0.151235, + 0.916667 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.7, + "inputs": { + "pressure": [ + [ + 0.0, + -2.5 + ], + [ + 1.0, + 0.3125 + ] + ], + "stroke": [ + [ + 0.0, + -0.0 + ], + [ + 0.669753, + -0.0 + ], + [ + 1.0, + -2.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.4 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 7.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/acrylic-03-paint_prev.png b/stuff/library/mypaint brushes/tanda/acrylic-03-paint_prev.png new file mode 100644 index 0000000..f11629b Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/acrylic-03-paint_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/acrylic-03-with-water.myb b/stuff/library/mypaint brushes/tanda/acrylic-03-with-water.myb new file mode 100644 index 0000000..72de643 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/acrylic-03-with-water.myb @@ -0,0 +1,243 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/acrylic-03-with-water", + "settings": { + "anti_aliasing": { + "base_value": 0.44, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 10.0, + "inputs": { + "speed1": [ + [ + 0.0, + -7.5 + ], + [ + 0.962963, + -2.03125 + ], + [ + 4.0, + 0.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.95, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.058642, + 0.604167 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.9, + "inputs": { + "pressure": [ + [ + 0.0, + -2.6 + ], + [ + 1.0, + 0.433333 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.9, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.9, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/acrylic-03-with-water_prev.png b/stuff/library/mypaint brushes/tanda/acrylic-03-with-water_prev.png new file mode 100644 index 0000000..14d1232 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/acrylic-03-with-water_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/acrylic-04-only-water.myb b/stuff/library/mypaint brushes/tanda/acrylic-04-only-water.myb new file mode 100644 index 0000000..15d8c3d --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/acrylic-04-only-water.myb @@ -0,0 +1,306 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/acrylic-04-only-water", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 4.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 0.75, + -0.0 + ], + [ + 1.0, + -2.7 + ] + ], + "speed1": [ + [ + 0.0, + -2.5 + ], + [ + 4.0, + 2.5 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.753086, + 0.0 + ], + [ + 1.0, + 0.1 + ] + ] + } + }, + "hardness": { + "base_value": 0.4, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 0.746914, + -0.0 + ], + [ + 1.0, + -0.3 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.75, + 0.0 + ], + [ + 1.0, + 0.8 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "random": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.040123, + 0.885417 + ], + [ + 0.138889, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.9, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.75, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.1, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/acrylic-04-only-water_prev.png b/stuff/library/mypaint brushes/tanda/acrylic-04-only-water_prev.png new file mode 100644 index 0000000..2895b0d Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/acrylic-04-only-water_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/acrylic-04-paint.myb b/stuff/library/mypaint brushes/tanda/acrylic-04-paint.myb new file mode 100644 index 0000000..58152d0 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/acrylic-04-paint.myb @@ -0,0 +1,254 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + -0.01 + ], + [ + 1.0, + 0.01 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 4.0, + "inputs": { + "speed1": [ + [ + 0.0, + -4.0 + ], + [ + 4.0, + 4.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "random": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.040123, + 0.885417 + ], + [ + 0.138889, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.6, + "inputs": { + "pressure": [ + [ + 0.0, + -2.6 + ], + [ + 1.0, + 0.677083 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/acrylic-04-paint_prev.png b/stuff/library/mypaint brushes/tanda/acrylic-04-paint_prev.png new file mode 100644 index 0000000..0f53b2f Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/acrylic-04-paint_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/acrylic-04-with-water.myb b/stuff/library/mypaint brushes/tanda/acrylic-04-with-water.myb new file mode 100644 index 0000000..9b501c5 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/acrylic-04-with-water.myb @@ -0,0 +1,262 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/acrylic-04-with-water", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 4.0, + "inputs": { + "speed1": [ + [ + 0.0, + -4.0 + ], + [ + 4.0, + 4.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.5, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "random": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.040123, + 0.885417 + ], + [ + 0.138889, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.6, + "inputs": { + "pressure": [ + [ + 0.0, + -2.6 + ], + [ + 1.0, + 0.65 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.9, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 0.398148, + -0.0 + ], + [ + 0.743827, + -0.4 + ], + [ + 1.0, + -0.4 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/acrylic-04-with-water_prev.png b/stuff/library/mypaint brushes/tanda/acrylic-04-with-water_prev.png new file mode 100644 index 0000000..aad96b7 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/acrylic-04-with-water_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/acrylic-05-only-water.myb b/stuff/library/mypaint brushes/tanda/acrylic-05-only-water.myb new file mode 100644 index 0000000..cbea5d0 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/acrylic-05-only-water.myb @@ -0,0 +1,231 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/acrylic-05-only-water", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.18, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.9, + "inputs": { + "speed1": [ + [ + 0.0, + 0.028571 + ], + [ + 4.0, + -0.2 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.046296, + 0.71875 + ], + [ + 0.154321, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.1, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.958333 + ], + [ + 1.0, + 2.0 + ] + ], + "speed1": [ + [ + 0.0, + -0.916667 + ], + [ + 3.7, + -2.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.9, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/acrylic-05-only-water_prev.png b/stuff/library/mypaint brushes/tanda/acrylic-05-only-water_prev.png new file mode 100644 index 0000000..9c4f9aa Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/acrylic-05-only-water_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/acrylic-05-paint.myb b/stuff/library/mypaint brushes/tanda/acrylic-05-paint.myb new file mode 100644 index 0000000..3df38af --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/acrylic-05-paint.myb @@ -0,0 +1,231 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/acrylic-05-paint", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.9, + "inputs": { + "speed1": [ + [ + 0.0, + 0.028571 + ], + [ + 4.0, + -0.2 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.046296, + 0.71875 + ], + [ + 0.154321, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.1, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.958333 + ], + [ + 1.0, + 2.0 + ] + ], + "speed1": [ + [ + 0.0, + -0.916667 + ], + [ + 3.7, + -2.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/acrylic-05-paint_prev.png b/stuff/library/mypaint brushes/tanda/acrylic-05-paint_prev.png new file mode 100644 index 0000000..1004ff8 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/acrylic-05-paint_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/acrylic-05-with-water.myb b/stuff/library/mypaint brushes/tanda/acrylic-05-with-water.myb new file mode 100644 index 0000000..daa14f3 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/acrylic-05-with-water.myb @@ -0,0 +1,234 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/acrylic-05-with-water", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.9, + "inputs": { + "speed1": [ + [ + 0.0, + 0.11 + ], + [ + 4.0, + -0.77 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.1, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.083333 + ], + [ + 1.0, + 2.0 + ] + ], + "speed1": [ + [ + 0.0, + -1.00375 + ], + [ + 3.7, + -2.19 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 1.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.1, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.4 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/acrylic-05-with-water_prev.png b/stuff/library/mypaint brushes/tanda/acrylic-05-with-water_prev.png new file mode 100644 index 0000000..6082a1b Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/acrylic-05-with-water_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/charcoal-01.myb b/stuff/library/mypaint brushes/tanda/charcoal-01.myb new file mode 100644 index 0000000..efda262 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/charcoal-01.myb @@ -0,0 +1,260 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/charcoal-01", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 3.0, + "inputs": { + "random": [ + [ + 0.0, + -1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.9, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 1.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.2, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.5 + ] + ], + "random": [ + [ + 0.0, + -0.6 + ], + [ + 1.0, + 0.6 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.083333, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": -0.4, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.6 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 4.0, + 0.2 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/charcoal-01_prev.png b/stuff/library/mypaint brushes/tanda/charcoal-01_prev.png new file mode 100644 index 0000000..a00f558 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/charcoal-01_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/charcoal-03.myb b/stuff/library/mypaint brushes/tanda/charcoal-03.myb new file mode 100644 index 0000000..a3450e9 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/charcoal-03.myb @@ -0,0 +1,258 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 3.0, + "inputs": { + "random": [ + [ + 0.0, + -1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 1.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.2, + "inputs": { + "pressure": [ + [ + 0.0, + -0.101563 + ], + [ + 0.243827, + -0.101563 + ], + [ + 0.5, + 0.75 + ], + [ + 1.0, + 0.75 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.083333, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.2, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.5 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 4.0, + 0.3 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/charcoal-03_prev.png b/stuff/library/mypaint brushes/tanda/charcoal-03_prev.png new file mode 100644 index 0000000..2e13ee0 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/charcoal-03_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/charcoal-04.myb b/stuff/library/mypaint brushes/tanda/charcoal-04.myb new file mode 100644 index 0000000..9541a17 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/charcoal-04.myb @@ -0,0 +1,247 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 10.0, + "inputs": { + "random": [ + [ + 0.0, + 9.0 + ], + [ + 1.0, + -9.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 1.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.2, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.75 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.064815, + 0.666667 + ], + [ + 0.135802, + 0.927083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.1, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 3.024691, + 0.0 + ], + [ + 4.0, + 0.5 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/charcoal-04_prev.png b/stuff/library/mypaint brushes/tanda/charcoal-04_prev.png new file mode 100644 index 0000000..8747a6a Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/charcoal-04_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/charcoal-blur1.myb b/stuff/library/mypaint brushes/tanda/charcoal-blur1.myb new file mode 100644 index 0000000..74b7e48 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/charcoal-blur1.myb @@ -0,0 +1,232 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 10.0, + "inputs": { + "random": [ + [ + 0.0, + -1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.1, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 1.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.2, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.75 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.064815, + 0.666667 + ], + [ + 0.135802, + 0.927083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.6, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/charcoal-blur1_prev.png b/stuff/library/mypaint brushes/tanda/charcoal-blur1_prev.png new file mode 100644 index 0000000..b8c8b3d Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/charcoal-blur1_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/marker-01.myb b/stuff/library/mypaint brushes/tanda/marker-01.myb new file mode 100644 index 0000000..e697bca --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/marker-01.myb @@ -0,0 +1,227 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/marker-01", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 1.68, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.6, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.4 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.11, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.4, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.074405, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.35, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.15 + ] + ], + "speed2": [ + [ + 0.0, + -0.0 + ], + [ + 4.0, + -0.04 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/marker-01_prev.png b/stuff/library/mypaint brushes/tanda/marker-01_prev.png new file mode 100644 index 0000000..e2abd32 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/marker-01_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/marker-05.myb b/stuff/library/mypaint brushes/tanda/marker-05.myb new file mode 100644 index 0000000..f04f675 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/marker-05.myb @@ -0,0 +1,234 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/marker-05", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 1.68, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.6, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.354167 + ], + [ + 1.0, + -0.0 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.2, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.35, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.7 + ] + ], + "speed2": [ + [ + 0.0, + -0.0 + ], + [ + 4.0, + -0.04 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/marker-05_prev.png b/stuff/library/mypaint brushes/tanda/marker-05_prev.png new file mode 100644 index 0000000..969ae88 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/marker-05_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/oil-01-clean.myb b/stuff/library/mypaint brushes/tanda/oil-01-clean.myb new file mode 100644 index 0000000..f046a3a --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/oil-01-clean.myb @@ -0,0 +1,277 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/oil-01-clean", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 7.1, + "inputs": { + "stroke": [ + [ + 0.0, + -0.4 + ], + [ + 1.0, + 0.4 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.6, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.166667, + 0.75 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.067901, + 0.78125 + ], + [ + 0.185185, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.0, + "inputs": { + "pressure": [ + [ + 0.0, + -2.0 + ], + [ + 0.398148, + 0.0 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.5, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 6.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.2, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/oil-01-clean_prev.png b/stuff/library/mypaint brushes/tanda/oil-01-clean_prev.png new file mode 100644 index 0000000..c930617 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/oil-01-clean_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/oil-01-paint.myb b/stuff/library/mypaint brushes/tanda/oil-01-paint.myb new file mode 100644 index 0000000..20f2c49 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/oil-01-paint.myb @@ -0,0 +1,302 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/oil-01-paint", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.969136, + 0.01 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 7.1, + "inputs": { + "stroke": [ + [ + 0.0, + -0.4 + ], + [ + 1.0, + 0.4 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.6, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.166667, + 0.75 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.067901, + 0.78125 + ], + [ + 0.185185, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.0, + "inputs": { + "pressure": [ + [ + 0.0, + -2.3 + ], + [ + 0.398148, + 0.0 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.4, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -0.6 + ] + ], + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.5, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 6.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.2, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/oil-01-paint_prev.png b/stuff/library/mypaint brushes/tanda/oil-01-paint_prev.png new file mode 100644 index 0000000..c5c94e5 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/oil-01-paint_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/oil-03-clean.myb b/stuff/library/mypaint brushes/tanda/oil-03-clean.myb new file mode 100644 index 0000000..3d75f68 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/oil-03-clean.myb @@ -0,0 +1,287 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/oil-03-clean", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -0.01 + ], + [ + 1.0, + 0.01 + ] + ] + } + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.92284, + 0.01 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ], + "random": [ + [ + 0.0, + -0.5 + ], + [ + 1.0, + 0.5 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 7.1, + "inputs": { + "stroke": [ + [ + 0.0, + -0.5 + ], + [ + 1.0, + 0.5 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.4, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.166667, + 0.75 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.067901, + 0.78125 + ], + [ + 0.185185, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.3, + "inputs": { + "pressure": [ + [ + 0.0, + -2.3 + ], + [ + 0.401235, + 0.0 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 6.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.2, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/oil-03-clean_prev.png b/stuff/library/mypaint brushes/tanda/oil-03-clean_prev.png new file mode 100644 index 0000000..f84d6d5 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/oil-03-clean_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/oil-03-paint.myb b/stuff/library/mypaint brushes/tanda/oil-03-paint.myb new file mode 100644 index 0000000..eb0bf4a --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/oil-03-paint.myb @@ -0,0 +1,319 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/oil-03-paint", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -0.01 + ], + [ + 1.0, + 0.01 + ] + ] + } + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.92284, + 0.01 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 180.0 + ] + ], + "random": [ + [ + 0.0, + -0.5 + ], + [ + 1.0, + 0.5 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 7.1, + "inputs": { + "stroke": [ + [ + 0.0, + -0.5 + ], + [ + 1.0, + 0.5 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.4, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.166667, + 0.75 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.067901, + 0.78125 + ], + [ + 0.185185, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.3, + "inputs": { + "pressure": [ + [ + 0.0, + -2.3 + ], + [ + 0.401235, + 0.0 + ], + [ + 1.0, + 0.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.9, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -1.0 + ] + ], + "stroke": [ + [ + 0.0, + -1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": { + "stroke": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + -1.0 + ] + ] + } + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 6.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.2, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/oil-03-paint_prev.png b/stuff/library/mypaint brushes/tanda/oil-03-paint_prev.png new file mode 100644 index 0000000..04ff7f9 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/oil-03-paint_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/oil-06-clean.myb b/stuff/library/mypaint brushes/tanda/oil-06-clean.myb new file mode 100644 index 0000000..d74f74a --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/oil-06-clean.myb @@ -0,0 +1,231 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/oil-06-clean", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.9, + "inputs": { + "speed1": [ + [ + 0.0, + 0.028571 + ], + [ + 4.0, + -0.2 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.046296, + 0.71875 + ], + [ + 0.154321, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.1, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.958333 + ], + [ + 1.0, + 2.0 + ] + ], + "speed1": [ + [ + 0.0, + -0.916667 + ], + [ + 3.7, + -2.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.9, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 5.5, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/oil-06-clean_prev.png b/stuff/library/mypaint brushes/tanda/oil-06-clean_prev.png new file mode 100644 index 0000000..402f30d Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/oil-06-clean_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/oil-06-paint.myb b/stuff/library/mypaint brushes/tanda/oil-06-paint.myb new file mode 100644 index 0000000..6ecdb04 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/oil-06-paint.myb @@ -0,0 +1,246 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/oil-06-paint", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 5.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.9, + "inputs": { + "speed1": [ + [ + 0.0, + 0.028571 + ], + [ + 4.0, + -0.2 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.046296, + 0.71875 + ], + [ + 0.154321, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.1, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.958333 + ], + [ + 1.0, + 2.0 + ] + ], + "speed1": [ + [ + 0.0, + -0.916667 + ], + [ + 3.7, + -2.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 2.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.5, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 5.5, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/oil-06-paint_prev.png b/stuff/library/mypaint brushes/tanda/oil-06-paint_prev.png new file mode 100644 index 0000000..41c8227 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/oil-06-paint_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/oil-mop.myb b/stuff/library/mypaint brushes/tanda/oil-mop.myb new file mode 100644 index 0000000..84abcf5 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/oil-mop.myb @@ -0,0 +1,260 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/oil-mop", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 4.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "stroke": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 3.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.3 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.033951, + 0.0625 + ], + [ + 1.0, + 0.1 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.2, + "inputs": { + "pressure": [ + [ + 0.0, + -0.687917 + ], + [ + 1.0, + 0.568854 + ] + ], + "speed1": [ + [ + 0.0, + 0.0 + ], + [ + 4.0, + 1.01 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/oil-mop_prev.png b/stuff/library/mypaint brushes/tanda/oil-mop_prev.png new file mode 100644 index 0000000..5325ced Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/oil-mop_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/pencil-2b.myb b/stuff/library/mypaint brushes/tanda/pencil-2b.myb new file mode 100644 index 0000000..a094b1a --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/pencil-2b.myb @@ -0,0 +1,228 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/pencil-2b", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 4.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.2, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + -0.3 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.15, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.15, + "inputs": { + "pressure": [ + [ + 0.0, + -0.687917 + ], + [ + 0.752976, + 0.236471 + ], + [ + 1.0, + 0.286632 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/pencil-2b_prev.png b/stuff/library/mypaint brushes/tanda/pencil-2b_prev.png new file mode 100644 index 0000000..7e8f5f2 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/pencil-2b_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/pencil-8b.myb b/stuff/library/mypaint brushes/tanda/pencil-8b.myb new file mode 100644 index 0000000..8c0ab0d --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/pencil-8b.myb @@ -0,0 +1,239 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "", + "settings": { + "anti_aliasing": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.53, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.9, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 1.0, + -0.5 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.15, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.0, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.8, + "inputs": { + "pressure": [ + [ + 0.0, + -4.5 + ], + [ + 0.758929, + -1.03125 + ], + [ + 1.0, + -1.546875 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 1.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/pencil-8b_prev.png b/stuff/library/mypaint brushes/tanda/pencil-8b_prev.png new file mode 100644 index 0000000..a1281b0 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/pencil-8b_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/splatter-02.myb b/stuff/library/mypaint brushes/tanda/splatter-02.myb new file mode 100644 index 0000000..8517a2f --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/splatter-02.myb @@ -0,0 +1,202 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/splatter-02", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.05, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.88, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 2.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 0.5, + "inputs": { + "pressure": [ + [ + 0.0, + -0.3 + ], + [ + 1.0, + 0.45 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 1.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 1.5, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 1.3, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 1.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 12.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/splatter-02_prev.png b/stuff/library/mypaint brushes/tanda/splatter-02_prev.png new file mode 100644 index 0000000..c20a273 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/splatter-02_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/splatter-04.myb b/stuff/library/mypaint brushes/tanda/splatter-04.myb new file mode 100644 index 0000000..d9bb3db --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/splatter-04.myb @@ -0,0 +1,239 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/splatter-04", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 10.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": { + "random": [ + [ + 0.0, + -0.2 + ], + [ + 1.0, + 0.2 + ] + ] + } + }, + "eraser": { + "base_value": 0.08, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": { + "speed1": [ + [ + 0.0, + 0.095714 + ], + [ + 4.0, + -0.67 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.3, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "speed1": [ + [ + 0.0, + -0.0 + ], + [ + 4.0, + -0.51 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 1.0, + "inputs": {} + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.0, + "inputs": { + "speed1": [ + [ + 0.0, + 1.0 + ], + [ + 2.107143, + -0.6875 + ], + [ + 4.0, + -1.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.05, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/splatter-04_prev.png b/stuff/library/mypaint brushes/tanda/splatter-04_prev.png new file mode 100644 index 0000000..03d801c Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/splatter-04_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/texture-03.myb b/stuff/library/mypaint brushes/tanda/texture-03.myb new file mode 100644 index 0000000..dd1c04f --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/texture-03.myb @@ -0,0 +1,223 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/texture-03", + "settings": { + "anti_aliasing": { + "base_value": 5.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + -0.3 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -0.5 + ], + [ + 1.0, + 0.5 + ] + ], + "stroke": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 9.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 2.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.0, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/texture-03_prev.png b/stuff/library/mypaint brushes/tanda/texture-03_prev.png new file mode 100644 index 0000000..0a74641 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/texture-03_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/texture-06.myb b/stuff/library/mypaint brushes/tanda/texture-06.myb new file mode 100644 index 0000000..341f441 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/texture-06.myb @@ -0,0 +1,244 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/texture-06", + "settings": { + "anti_aliasing": { + "base_value": 5.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "stroke": [ + [ + 0.0, + -0.3 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -0.5 + ], + [ + 1.0, + 0.5 + ] + ], + "stroke": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 10.0, + "inputs": { + "speed1": [ + [ + 0.0, + 9.0 + ], + [ + 4.0, + 9.0 + ] + ], + "speed2": [ + [ + 0.0, + 9.0 + ], + [ + 4.0, + 9.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.5, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": -0.5, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/texture-06_prev.png b/stuff/library/mypaint brushes/tanda/texture-06_prev.png new file mode 100644 index 0000000..33e8859 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/texture-06_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/texture-12.myb b/stuff/library/mypaint brushes/tanda/texture-12.myb new file mode 100644 index 0000000..174fef1 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/texture-12.myb @@ -0,0 +1,246 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/texture-12", + "settings": { + "anti_aliasing": { + "base_value": 2.51, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": { + "direction": [ + [ + 0.0, + 0.0 + ], + [ + 180.0, + 0.1 + ] + ] + } + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -0.2 + ], + [ + 1.0, + 0.2 + ] + ] + } + }, + "change_color_v": { + "base_value": 0.0, + "inputs": { + "random": [ + [ + 0.0, + -0.3 + ], + [ + 1.0, + 0.3 + ] + ] + } + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 4.0, + "inputs": { + "random": [ + [ + 0.0, + -3.0 + ], + [ + 1.0, + 3.0 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.8, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 2.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.0, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.5, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/texture-12_prev.png b/stuff/library/mypaint brushes/tanda/texture-12_prev.png new file mode 100644 index 0000000..93cd9b6 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/texture-12_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/water-01.myb b/stuff/library/mypaint brushes/tanda/water-01.myb new file mode 100644 index 0000000..8d1558c --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/water-01.myb @@ -0,0 +1,232 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/water-01", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.4, + "inputs": { + "random": [ + [ + 0.0, + -0.11 + ], + [ + 1.0, + 0.11 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 1.5, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 1.18, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.058642, + 0.427083 + ], + [ + 0.200617, + 0.677083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.1, + "inputs": { + "random": [ + [ + 0.0, + -1.5 + ], + [ + 1.0, + 1.5 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.1, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/water-01_prev.png b/stuff/library/mypaint brushes/tanda/water-01_prev.png new file mode 100644 index 0000000..4e8b95a Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/water-01_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/water-02.myb b/stuff/library/mypaint brushes/tanda/water-02.myb new file mode 100644 index 0000000..4d4cad0 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/water-02.myb @@ -0,0 +1,199 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/water-02", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 1.0, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 2.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.058642, + 0.427083 + ], + [ + 0.200617, + 0.677083 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.5, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 0.5, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.1, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 12.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/water-02_prev.png b/stuff/library/mypaint brushes/tanda/water-02_prev.png new file mode 100644 index 0000000..9b711aa Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/water-02_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/water-05.myb b/stuff/library/mypaint brushes/tanda/water-05.myb new file mode 100644 index 0000000..cb0a2ab --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/water-05.myb @@ -0,0 +1,199 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/water-05", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 80.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": {} + }, + "elliptical_dab_ratio": { + "base_value": 1.0, + "inputs": {} + }, + "eraser": { + "base_value": 0.0, + "inputs": {} + }, + "hardness": { + "base_value": 0.4, + "inputs": {} + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 2.0, + "inputs": {} + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": {} + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.040123, + 0.59375 + ], + [ + 0.154321, + 0.770833 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.5, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.0, + "inputs": {} + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.1, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/water-05_prev.png b/stuff/library/mypaint brushes/tanda/water-05_prev.png new file mode 100644 index 0000000..0d699a7 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/water-05_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/water-06.myb b/stuff/library/mypaint brushes/tanda/water-06.myb new file mode 100644 index 0000000..39537a0 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/water-06.myb @@ -0,0 +1,310 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/water-06", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 4.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 0.75, + -0.0 + ], + [ + 1.0, + -2.7 + ] + ], + "speed1": [ + [ + 0.0, + -0.5 + ], + [ + 0.148148, + 0.270833 + ], + [ + 4.0, + 0.5 + ] + ] + } + }, + "eraser": { + "base_value": 0.1, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.753086, + 0.0 + ], + [ + 1.0, + 0.5 + ] + ] + } + }, + "hardness": { + "base_value": 0.4, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 0.746914, + -0.0 + ], + [ + 1.0, + -0.3 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.75, + 0.0 + ], + [ + 1.0, + 0.8 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "random": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.040123, + 0.885417 + ], + [ + 0.138889, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 3.2, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.75, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.1, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/water-06_prev.png b/stuff/library/mypaint brushes/tanda/water-06_prev.png new file mode 100644 index 0000000..96eda5e Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/water-06_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/watercolor-02-paint.myb b/stuff/library/mypaint brushes/tanda/watercolor-02-paint.myb new file mode 100644 index 0000000..e0f7542 --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/watercolor-02-paint.myb @@ -0,0 +1,327 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/watercolor-02-paint", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 4.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 0.75, + -0.0 + ], + [ + 1.0, + -2.7 + ] + ], + "speed1": [ + [ + 0.0, + -0.7 + ], + [ + 4.0, + 0.7 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.753086, + 0.0 + ], + [ + 1.0, + 0.1 + ] + ] + } + }, + "hardness": { + "base_value": 0.4, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 0.746914, + -0.0 + ], + [ + 1.0, + -0.3 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.75, + 0.0 + ], + [ + 1.0, + 0.8 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "random": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.040123, + 0.885417 + ], + [ + 0.138889, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.6, + "inputs": { + "pressure": [ + [ + 0.0, + -2.9 + ], + [ + 1.0, + 0.845833 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 0.95, + "inputs": { + "speed1": [ + [ + 0.0, + -0.1 + ], + [ + 4.0, + 0.1 + ] + ], + "stroke": [ + [ + 0.0, + 0.0 + ], + [ + 0.5, + 0.0 + ], + [ + 1.0, + 0.05 + ] + ] + } + }, + "smudge_length": { + "base_value": 0.1, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 6.5, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 10.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/watercolor-02-paint_prev.png b/stuff/library/mypaint brushes/tanda/watercolor-02-paint_prev.png new file mode 100644 index 0000000..ffb1382 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/watercolor-02-paint_prev.png differ diff --git a/stuff/library/mypaint brushes/tanda/watercolor-02-water.myb b/stuff/library/mypaint brushes/tanda/watercolor-02-water.myb new file mode 100644 index 0000000..bf8ec2e --- /dev/null +++ b/stuff/library/mypaint brushes/tanda/watercolor-02-water.myb @@ -0,0 +1,296 @@ +{ + "comment": "MyPaint brush file", + "group": "", + "parent_brush_name": "tanda/watercolor-02-water", + "settings": { + "anti_aliasing": { + "base_value": 1.0, + "inputs": {} + }, + "change_color_h": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsl_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_hsv_s": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_l": { + "base_value": 0.0, + "inputs": {} + }, + "change_color_v": { + "base_value": 0.0, + "inputs": {} + }, + "color_h": { + "base_value": 0.0, + "inputs": {} + }, + "color_s": { + "base_value": 0.0, + "inputs": {} + }, + "color_v": { + "base_value": 0.0, + "inputs": {} + }, + "colorize": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input": { + "base_value": 0.0, + "inputs": {} + }, + "custom_input_slowness": { + "base_value": 0.0, + "inputs": {} + }, + "dabs_per_actual_radius": { + "base_value": 2.0, + "inputs": {} + }, + "dabs_per_basic_radius": { + "base_value": 6.0, + "inputs": {} + }, + "dabs_per_second": { + "base_value": 0.0, + "inputs": {} + }, + "direction_filter": { + "base_value": 2.0, + "inputs": {} + }, + "elliptical_dab_angle": { + "base_value": 90.0, + "inputs": { + "random": [ + [ + 0.0, + -180.0 + ], + [ + 1.0, + 180.0 + ] + ] + } + }, + "elliptical_dab_ratio": { + "base_value": 4.0, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 0.75, + -0.0 + ], + [ + 1.0, + -2.7 + ] + ] + } + }, + "eraser": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.753086, + 0.0 + ], + [ + 1.0, + 0.1 + ] + ] + } + }, + "hardness": { + "base_value": 0.4, + "inputs": { + "pressure": [ + [ + 0.0, + -0.0 + ], + [ + 0.746914, + -0.0 + ], + [ + 1.0, + -0.3 + ] + ] + } + }, + "lock_alpha": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_random": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.75, + 0.0 + ], + [ + 1.0, + 0.8 + ] + ] + } + }, + "offset_by_speed": { + "base_value": 0.0, + "inputs": {} + }, + "offset_by_speed_slowness": { + "base_value": 1.0, + "inputs": {} + }, + "opaque": { + "base_value": 1.0, + "inputs": { + "random": [ + [ + 0.0, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "opaque_linearize": { + "base_value": 0.9, + "inputs": {} + }, + "opaque_multiply": { + "base_value": 0.0, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.040123, + 0.885417 + ], + [ + 0.138889, + 1.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "radius_by_random": { + "base_value": 0.0, + "inputs": {} + }, + "radius_logarithmic": { + "base_value": 2.6, + "inputs": { + "pressure": [ + [ + 0.0, + 0.0 + ], + [ + 0.75, + 0.0 + ], + [ + 1.0, + 1.0 + ] + ] + } + }, + "restore_color": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking": { + "base_value": 0.0, + "inputs": {} + }, + "slow_tracking_per_dab": { + "base_value": 0.0, + "inputs": {} + }, + "smudge": { + "base_value": 1.0, + "inputs": {} + }, + "smudge_length": { + "base_value": 0.1, + "inputs": {} + }, + "smudge_radius_log": { + "base_value": 0.0, + "inputs": {} + }, + "speed1_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed1_slowness": { + "base_value": 0.04, + "inputs": {} + }, + "speed2_gamma": { + "base_value": 4.0, + "inputs": {} + }, + "speed2_slowness": { + "base_value": 0.8, + "inputs": {} + }, + "stroke_duration_logarithmic": { + "base_value": 4.0, + "inputs": {} + }, + "stroke_holdtime": { + "base_value": 0.0, + "inputs": {} + }, + "stroke_threshold": { + "base_value": 0.0, + "inputs": {} + }, + "tracking_noise": { + "base_value": 0.0, + "inputs": {} + } + }, + "version": 3 +} \ No newline at end of file diff --git a/stuff/library/mypaint brushes/tanda/watercolor-02-water_prev.png b/stuff/library/mypaint brushes/tanda/watercolor-02-water_prev.png new file mode 100644 index 0000000..8b82414 Binary files /dev/null and b/stuff/library/mypaint brushes/tanda/watercolor-02-water_prev.png differ diff --git a/thirdparty/libmypaint/.gitignore b/thirdparty/libmypaint/.gitignore new file mode 100644 index 0000000..a1c07e8 --- /dev/null +++ b/thirdparty/libmypaint/.gitignore @@ -0,0 +1,3 @@ +/build/ +/download/ +/src/ diff --git a/thirdparty/libmypaint/README b/thirdparty/libmypaint/README new file mode 100644 index 0000000..4b0866d --- /dev/null +++ b/thirdparty/libmypaint/README @@ -0,0 +1,18 @@ +Scripts for cross-build libmypaint for Windows (MinGW) under Debian 8 Jessie + +1. install mingw toolchain (via apt-get for ex) + +2. run ./build-all.sh + +---------------- + +files: + + build-all.sh - script to do all things + + build.sh - build selected library (for ex: ./build.sh 64 json-c) + + download-all.sh - download and unpack all sources + + mingw-vars.sh - configuration of MinGW toolchain, configured for Debian 8 + \ No newline at end of file diff --git a/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-brush-settings-gen.h b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-brush-settings-gen.h new file mode 100644 index 0000000..77e0932 --- /dev/null +++ b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-brush-settings-gen.h @@ -0,0 +1,98 @@ +// DO NOT EDIT - autogenerated by generate.py + +typedef enum { + MYPAINT_BRUSH_INPUT_PRESSURE, + MYPAINT_BRUSH_INPUT_SPEED1, + MYPAINT_BRUSH_INPUT_SPEED2, + MYPAINT_BRUSH_INPUT_RANDOM, + MYPAINT_BRUSH_INPUT_STROKE, + MYPAINT_BRUSH_INPUT_DIRECTION, + MYPAINT_BRUSH_INPUT_TILT_DECLINATION, + MYPAINT_BRUSH_INPUT_TILT_ASCENSION, + MYPAINT_BRUSH_INPUT_CUSTOM, + MYPAINT_BRUSH_INPUTS_COUNT +} MyPaintBrushInput; + +typedef enum { + MYPAINT_BRUSH_SETTING_OPAQUE, + MYPAINT_BRUSH_SETTING_OPAQUE_MULTIPLY, + MYPAINT_BRUSH_SETTING_OPAQUE_LINEARIZE, + MYPAINT_BRUSH_SETTING_RADIUS_LOGARITHMIC, + MYPAINT_BRUSH_SETTING_HARDNESS, + MYPAINT_BRUSH_SETTING_ANTI_ALIASING, + MYPAINT_BRUSH_SETTING_DABS_PER_BASIC_RADIUS, + MYPAINT_BRUSH_SETTING_DABS_PER_ACTUAL_RADIUS, + MYPAINT_BRUSH_SETTING_DABS_PER_SECOND, + MYPAINT_BRUSH_SETTING_RADIUS_BY_RANDOM, + MYPAINT_BRUSH_SETTING_SPEED1_SLOWNESS, + MYPAINT_BRUSH_SETTING_SPEED2_SLOWNESS, + MYPAINT_BRUSH_SETTING_SPEED1_GAMMA, + MYPAINT_BRUSH_SETTING_SPEED2_GAMMA, + MYPAINT_BRUSH_SETTING_OFFSET_BY_RANDOM, + MYPAINT_BRUSH_SETTING_OFFSET_BY_SPEED, + MYPAINT_BRUSH_SETTING_OFFSET_BY_SPEED_SLOWNESS, + MYPAINT_BRUSH_SETTING_SLOW_TRACKING, + MYPAINT_BRUSH_SETTING_SLOW_TRACKING_PER_DAB, + MYPAINT_BRUSH_SETTING_TRACKING_NOISE, + MYPAINT_BRUSH_SETTING_COLOR_H, + MYPAINT_BRUSH_SETTING_COLOR_S, + MYPAINT_BRUSH_SETTING_COLOR_V, + MYPAINT_BRUSH_SETTING_RESTORE_COLOR, + MYPAINT_BRUSH_SETTING_CHANGE_COLOR_H, + MYPAINT_BRUSH_SETTING_CHANGE_COLOR_L, + MYPAINT_BRUSH_SETTING_CHANGE_COLOR_HSL_S, + MYPAINT_BRUSH_SETTING_CHANGE_COLOR_V, + MYPAINT_BRUSH_SETTING_CHANGE_COLOR_HSV_S, + MYPAINT_BRUSH_SETTING_SMUDGE, + MYPAINT_BRUSH_SETTING_SMUDGE_LENGTH, + MYPAINT_BRUSH_SETTING_SMUDGE_RADIUS_LOG, + MYPAINT_BRUSH_SETTING_ERASER, + MYPAINT_BRUSH_SETTING_STROKE_THRESHOLD, + MYPAINT_BRUSH_SETTING_STROKE_DURATION_LOGARITHMIC, + MYPAINT_BRUSH_SETTING_STROKE_HOLDTIME, + MYPAINT_BRUSH_SETTING_CUSTOM_INPUT, + MYPAINT_BRUSH_SETTING_CUSTOM_INPUT_SLOWNESS, + MYPAINT_BRUSH_SETTING_ELLIPTICAL_DAB_RATIO, + MYPAINT_BRUSH_SETTING_ELLIPTICAL_DAB_ANGLE, + MYPAINT_BRUSH_SETTING_DIRECTION_FILTER, + MYPAINT_BRUSH_SETTING_LOCK_ALPHA, + MYPAINT_BRUSH_SETTING_COLORIZE, + MYPAINT_BRUSH_SETTING_SNAP_TO_PIXEL, + MYPAINT_BRUSH_SETTING_PRESSURE_GAIN_LOG, + MYPAINT_BRUSH_SETTINGS_COUNT +} MyPaintBrushSetting; + +typedef enum { + MYPAINT_BRUSH_STATE_X, + MYPAINT_BRUSH_STATE_Y, + MYPAINT_BRUSH_STATE_PRESSURE, + MYPAINT_BRUSH_STATE_PARTIAL_DABS, + MYPAINT_BRUSH_STATE_ACTUAL_RADIUS, + MYPAINT_BRUSH_STATE_SMUDGE_RA, + MYPAINT_BRUSH_STATE_SMUDGE_GA, + MYPAINT_BRUSH_STATE_SMUDGE_BA, + MYPAINT_BRUSH_STATE_SMUDGE_A, + MYPAINT_BRUSH_STATE_LAST_GETCOLOR_R, + MYPAINT_BRUSH_STATE_LAST_GETCOLOR_G, + MYPAINT_BRUSH_STATE_LAST_GETCOLOR_B, + MYPAINT_BRUSH_STATE_LAST_GETCOLOR_A, + MYPAINT_BRUSH_STATE_LAST_GETCOLOR_RECENTNESS, + MYPAINT_BRUSH_STATE_ACTUAL_X, + MYPAINT_BRUSH_STATE_ACTUAL_Y, + MYPAINT_BRUSH_STATE_NORM_DX_SLOW, + MYPAINT_BRUSH_STATE_NORM_DY_SLOW, + MYPAINT_BRUSH_STATE_NORM_SPEED1_SLOW, + MYPAINT_BRUSH_STATE_NORM_SPEED2_SLOW, + MYPAINT_BRUSH_STATE_STROKE, + MYPAINT_BRUSH_STATE_STROKE_STARTED, + MYPAINT_BRUSH_STATE_CUSTOM_INPUT, + MYPAINT_BRUSH_STATE_RNG_SEED, + MYPAINT_BRUSH_STATE_ACTUAL_ELLIPTICAL_DAB_RATIO, + MYPAINT_BRUSH_STATE_ACTUAL_ELLIPTICAL_DAB_ANGLE, + MYPAINT_BRUSH_STATE_DIRECTION_DX, + MYPAINT_BRUSH_STATE_DIRECTION_DY, + MYPAINT_BRUSH_STATE_DECLINATION, + MYPAINT_BRUSH_STATE_ASCENSION, + MYPAINT_BRUSH_STATES_COUNT +} MyPaintBrushState; + diff --git a/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-brush-settings.h b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-brush-settings.h new file mode 100644 index 0000000..221d257 --- /dev/null +++ b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-brush-settings.h @@ -0,0 +1,71 @@ +#ifndef MYPAINTBRUSHSETTINGS_H +#define MYPAINTBRUSHSETTINGS_H + +/* libmypaint - The MyPaint Brush Library + * Copyright (C) 2012 Jon Nordby + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include + +G_BEGIN_DECLS + +typedef struct { + const gchar *cname; + const gchar *name; // FIXME: needs to be accessed through gettext + gboolean constant; + float min; + float def; // default + float max; + const gchar *tooltip; // FIXME: needs to be accessed through gettext +} MyPaintBrushSettingInfo; + +const MyPaintBrushSettingInfo * +mypaint_brush_setting_info(MyPaintBrushSetting id); + +const gchar * +mypaint_brush_setting_info_get_name(const MyPaintBrushSettingInfo *self); +const gchar * +mypaint_brush_setting_info_get_tooltip(const MyPaintBrushSettingInfo *self); +MyPaintBrushSetting +mypaint_brush_setting_from_cname(const char *cname); + +typedef struct { + const gchar *cname; + float hard_min; + float soft_min; + float normal; + float soft_max; + float hard_max; + const gchar *name; // FIXME: needs to be accessed through gettext + const gchar *tooltip; // FIXME: needs to be accessed through gettext +} MyPaintBrushInputInfo; + +const MyPaintBrushInputInfo * +mypaint_brush_input_info(MyPaintBrushInput id); + +const gchar * +mypaint_brush_input_info_get_name(const MyPaintBrushInputInfo *self); + +const gchar * +mypaint_brush_input_info_get_tooltip(const MyPaintBrushInputInfo *self); + +MyPaintBrushInput +mypaint_brush_input_from_cname(const char *cname); + +G_END_DECLS + +#endif // MYPAINTBRUSHSETTINGS_H diff --git a/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-brush.h b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-brush.h new file mode 100644 index 0000000..837ed03 --- /dev/null +++ b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-brush.h @@ -0,0 +1,93 @@ +#ifndef MYPAINTBRUSH_H +#define MYPAINTBRUSH_H + +/* libmypaint - The MyPaint Brush Library + * Copyright (C) 2008 Martin Renold + * Copyright (C) 2012 Jon Nordby + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include + +G_BEGIN_DECLS + +typedef struct MyPaintBrush MyPaintBrush; + +MyPaintBrush * +mypaint_brush_new(void); + +void +mypaint_brush_unref(MyPaintBrush *self); +void +mypaint_brush_ref(MyPaintBrush *self); + +void +mypaint_brush_reset(MyPaintBrush *self); + +void +mypaint_brush_new_stroke(MyPaintBrush *self); + +int +mypaint_brush_stroke_to(MyPaintBrush *self, MyPaintSurface *surface, float x, float y, + float pressure, float xtilt, float ytilt, double dtime); + +void +mypaint_brush_set_base_value(MyPaintBrush *self, MyPaintBrushSetting id, float value); + +float +mypaint_brush_get_base_value(MyPaintBrush *self, MyPaintBrushSetting id); + +gboolean +mypaint_brush_is_constant(MyPaintBrush *self, MyPaintBrushSetting id); + +int +mypaint_brush_get_inputs_used_n(MyPaintBrush *self, MyPaintBrushSetting id); + +void +mypaint_brush_set_mapping_n(MyPaintBrush *self, MyPaintBrushSetting id, MyPaintBrushInput input, int n); + +int +mypaint_brush_get_mapping_n(MyPaintBrush *self, MyPaintBrushSetting id, MyPaintBrushInput input); + +void +mypaint_brush_set_mapping_point(MyPaintBrush *self, MyPaintBrushSetting id, MyPaintBrushInput input, int index, float x, float y); + +void +mypaint_brush_get_mapping_point(MyPaintBrush *self, MyPaintBrushSetting id, MyPaintBrushInput input, int index, float *x, float *y); + +float +mypaint_brush_get_state(MyPaintBrush *self, MyPaintBrushState i); + +void +mypaint_brush_set_state(MyPaintBrush *self, MyPaintBrushState i, float value); + +double +mypaint_brush_get_total_stroke_painting_time(MyPaintBrush *self); + +void +mypaint_brush_set_print_inputs(MyPaintBrush *self, gboolean enabled); + +void +mypaint_brush_from_defaults(MyPaintBrush *self); + + +gboolean +mypaint_brush_from_string(MyPaintBrush *self, const char *string); + + +G_END_DECLS + +#endif // MYPAINTBRUSH_H diff --git a/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-config.h b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-config.h new file mode 100644 index 0000000..55e6093 --- /dev/null +++ b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-config.h @@ -0,0 +1,16 @@ +#ifndef MYPAINTCONFIG_H +#define MYPAINTCONFIG_H + +#ifndef MYPAINT_TILE_SIZE +#define MYPAINT_TILE_SIZE 64 +#endif + +#ifndef MYPAINT_MAX_THREADS +#define MYPAINT_MAX_THREADS 16 +#endif + +#ifndef MYPAINT_MAX_MIPMAP_LEVEL +#define MYPAINT_MAX_MIPMAP_LEVEL 4 +#endif + +#endif /* MYPAINTCONFIG_H */ diff --git a/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-fixed-tiled-surface.h b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-fixed-tiled-surface.h new file mode 100644 index 0000000..53445ff --- /dev/null +++ b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-fixed-tiled-surface.h @@ -0,0 +1,34 @@ +#ifndef MYPAINTFIXEDTILEDSURFACE_H +#define MYPAINTFIXEDTILEDSURFACE_H + +#include +#include +#include + +G_BEGIN_DECLS + +/** + * MyPaintFixedTiledSurface: + * + * Simple #MyPaintTiledSurface subclass that implements a fixed sized #MyPaintSurface. + * Only intended for testing and trivial use-cases, and to serve as an example of + * how to implement a tiled surface subclass. + */ +typedef struct MyPaintFixedTiledSurface MyPaintFixedTiledSurface; + +MyPaintFixedTiledSurface * +mypaint_fixed_tiled_surface_new(int width, int height); + +int +mypaint_fixed_tiled_surface_get_width(MyPaintFixedTiledSurface *self); + +int +mypaint_fixed_tiled_surface_get_height(MyPaintFixedTiledSurface *self); + + +MyPaintSurface * +mypaint_fixed_tiled_surface_interface(MyPaintFixedTiledSurface *self); + +G_END_DECLS + +#endif // MYPAINTFIXEDTILEDSURFACE_H diff --git a/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-glib-compat.h b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-glib-compat.h new file mode 100644 index 0000000..bded620 --- /dev/null +++ b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-glib-compat.h @@ -0,0 +1,32 @@ +#ifndef MYPAINTGLIBCOMPAT_H +#define MYPAINTGLIBCOMPAT_H + +#include + +#ifndef __G_LIB_H__ + +/* From $INCLUDEPATH/glib-2.0/glib/gmacros.h */ +#ifdef __cplusplus +# define G_BEGIN_DECLS extern "C" { +# define G_END_DECLS } +#else +# define G_BEGIN_DECLS +# define G_END_DECLS +#endif + +#define FALSE (0) +#define TRUE (!FALSE) + +typedef void * gpointer; + +/* From $INCLUDEPATH/glib-2.0/glib/gtypes.h */ +typedef char gchar; +typedef int gint; +typedef gint gboolean; + +/* From $LIBPATH/glib-2.0/include/glibconfig.h */ +typedef unsigned short guint16; + +#endif // __G_LIB_H__ + +#endif // MYPAINTGLIBCOMPAT_H diff --git a/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-mapping.h b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-mapping.h new file mode 100644 index 0000000..a58e5d1 --- /dev/null +++ b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-mapping.h @@ -0,0 +1,27 @@ +#ifndef MAPPING_H +#define MAPPING_H + +#include +#include + +G_BEGIN_DECLS + +typedef struct MyPaintMapping MyPaintMapping; + +MyPaintMapping * mypaint_mapping_new(int inputs_); +void mypaint_mapping_free(MyPaintMapping *self); +float mypaint_mapping_get_base_value(MyPaintMapping *self); +void mypaint_mapping_set_base_value(MyPaintMapping *self, float value); +void mypaint_mapping_set_n (MyPaintMapping * self, int input, int n); +int mypaint_mapping_get_n (MyPaintMapping * self, int input); +void mypaint_mapping_set_point (MyPaintMapping * self, int input, int index, float x, float y); +void mypaint_mapping_get_point (MyPaintMapping * self, int input, int index, float *x, float *y); +gboolean mypaint_mapping_is_constant(MyPaintMapping * self); +int mypaint_mapping_get_inputs_used_n(MyPaintMapping *self); +float mypaint_mapping_calculate (MyPaintMapping * self, float * data); +float mypaint_mapping_calculate_single_input (MyPaintMapping * self, float input); + + +G_END_DECLS + +#endif // MAPPING_H diff --git a/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-rectangle.h b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-rectangle.h new file mode 100644 index 0000000..e08c68e --- /dev/null +++ b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-rectangle.h @@ -0,0 +1,39 @@ +#ifndef MYPAINTRECTANGLE_H +#define MYPAINTRECTANGLE_H + +/* libmypaint - The MyPaint Brush Library + * Copyright (C) 2008 Martin Renold + * Copyright (C) 2012 Jon Nordby + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include + +G_BEGIN_DECLS + +typedef struct { + int x; + int y; + int width; + int height; +} MyPaintRectangle; + +void mypaint_rectangle_expand_to_include_point(MyPaintRectangle *r, int x, int y); +MyPaintRectangle * +mypaint_rectangle_copy(MyPaintRectangle *self); + +G_END_DECLS + +#endif // MYPAINTRECTANGLE_H diff --git a/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-surface.h b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-surface.h new file mode 100644 index 0000000..1217a76 --- /dev/null +++ b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-surface.h @@ -0,0 +1,109 @@ +#ifndef MYPAINTSURFACE_H +#define MYPAINTSURFACE_H + +/* libmypaint - The MyPaint Brush Library + * Copyright (C) 2008 Martin Renold + * Copyright (C) 2012 Jon Nordby + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include + +G_BEGIN_DECLS + +typedef struct MyPaintSurface MyPaintSurface; + +typedef void (*MyPaintSurfaceGetColorFunction) (MyPaintSurface *self, + float x, float y, + float radius, + float * color_r, float * color_g, float * color_b, float * color_a + ); +typedef int (*MyPaintSurfaceDrawDabFunction) (MyPaintSurface *self, + float x, float y, + float radius, + float color_r, float color_g, float color_b, + float opaque, float hardness, + float alpha_eraser, + float aspect_ratio, float angle, + float lock_alpha, + float colorize); + +typedef void (*MyPaintSurfaceDestroyFunction) (MyPaintSurface *self); + +typedef void (*MyPaintSurfaceSavePngFunction) (MyPaintSurface *self, const char *path, int x, int y, int width, int height); + +typedef void (*MyPaintSurfaceBeginAtomicFunction) (MyPaintSurface *self); + +typedef void (*MyPaintSurfaceEndAtomicFunction) (MyPaintSurface *self, MyPaintRectangle *roi); + +/** + * MyPaintSurface: + * + * Abstract surface type for the MyPaint brush engine. The surface interface + * lets the brush engine specify dabs to render, and to pick color. + */ +struct MyPaintSurface { + MyPaintSurfaceDrawDabFunction draw_dab; + MyPaintSurfaceGetColorFunction get_color; + MyPaintSurfaceBeginAtomicFunction begin_atomic; + MyPaintSurfaceEndAtomicFunction end_atomic; + MyPaintSurfaceDestroyFunction destroy; + MyPaintSurfaceSavePngFunction save_png; + int refcount; +}; + +/** + * mypaint_surface_draw_dab: + * + * Draw a dab onto the surface. + */ +int +mypaint_surface_draw_dab(MyPaintSurface *self, + float x, float y, + float radius, + float color_r, float color_g, float color_b, + float opaque, float hardness, + float alpha_eraser, + float aspect_ratio, float angle, + float lock_alpha, + float colorize + ); + + +void +mypaint_surface_get_color(MyPaintSurface *self, + float x, float y, + float radius, + float * color_r, float * color_g, float * color_b, float * color_a + ); + +float +mypaint_surface_get_alpha (MyPaintSurface *self, float x, float y, float radius); + +void +mypaint_surface_save_png(MyPaintSurface *self, const char *path, int x, int y, int width, int height); + +void mypaint_surface_begin_atomic(MyPaintSurface *self); + +void mypaint_surface_end_atomic(MyPaintSurface *self, MyPaintRectangle *roi); + +void mypaint_surface_init(MyPaintSurface *self); +void mypaint_surface_ref(MyPaintSurface *self); +void mypaint_surface_unref(MyPaintSurface *self); + +G_END_DECLS + +#endif // MYPAINTSURFACE_H + diff --git a/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-tiled-surface.h b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-tiled-surface.h new file mode 100644 index 0000000..b225f7b --- /dev/null +++ b/thirdparty/libmypaint/dist/32/include/libmypaint/mypaint-tiled-surface.h @@ -0,0 +1,86 @@ +#ifndef MYPAINTTILEDSURFACE_H +#define MYPAINTTILEDSURFACE_H + +#include +#include +#include + +typedef enum { + MYPAINT_SYMMETRY_TYPE_VERTICAL, + MYPAINT_SYMMETRY_TYPE_HORIZONTAL, + MYPAINT_SYMMETRY_TYPE_VERTHORZ, + MYPAINT_SYMMETRY_TYPE_ROTATIONAL, + MYPAINT_SYMMETRY_TYPE_SNOWFLAKE, + MYPAINT_SYMMETRY_TYPES_COUNT +} MyPaintSymmetryType; + +G_BEGIN_DECLS + +typedef struct MyPaintTiledSurface MyPaintTiledSurface; + +typedef struct { + int tx; + int ty; + gboolean readonly; + guint16 *buffer; + gpointer context; /* Only to be used by the surface implemenations. */ + int thread_id; + int mipmap_level; +} MyPaintTileRequest; + +void +mypaint_tile_request_init(MyPaintTileRequest *data, int level, + int tx, int ty, gboolean readonly); + +typedef void (*MyPaintTileRequestStartFunction) (MyPaintTiledSurface *self, MyPaintTileRequest *request); +typedef void (*MyPaintTileRequestEndFunction) (MyPaintTiledSurface *self, MyPaintTileRequest *request); +typedef void (*MyPaintTiledSurfaceAreaChanged) (MyPaintTiledSurface *self, int bb_x, int bb_y, int bb_w, int bb_h); + +/** + * MyPaintTiledSurface: + * + * Interface and convenience class for implementing a #MyPaintSurface backed by a tile store. + * + * The size of the surface is infinite, and consumers need just implement two vfuncs. + */ +struct MyPaintTiledSurface { + MyPaintSurface parent; + /* private: */ + MyPaintTileRequestStartFunction tile_request_start; + MyPaintTileRequestEndFunction tile_request_end; + gboolean surface_do_symmetry; + MyPaintSymmetryType symmetry_type; + float surface_center_x; + float surface_center_y; + int rot_symmetry_lines; + struct OperationQueue *operation_queue; + MyPaintRectangle dirty_bbox; + gboolean threadsafe_tile_requests; + int tile_size; +}; + +void +mypaint_tiled_surface_init(MyPaintTiledSurface *self, + MyPaintTileRequestStartFunction tile_request_start, + MyPaintTileRequestEndFunction tile_request_end); + +void +mypaint_tiled_surface_destroy(MyPaintTiledSurface *self); + +void +mypaint_tiled_surface_set_symmetry_state(MyPaintTiledSurface *self, gboolean active, + float center_x, float center_y, + MyPaintSymmetryType symmetry_type, + int rot_symmetry_lines); +float +mypaint_tiled_surface_get_alpha (MyPaintTiledSurface *self, float x, float y, float radius); + +void mypaint_tiled_surface_tile_request_start(MyPaintTiledSurface *self, MyPaintTileRequest *request); +void mypaint_tiled_surface_tile_request_end(MyPaintTiledSurface *self, MyPaintTileRequest *request); + +void mypaint_tiled_surface_begin_atomic(MyPaintTiledSurface *self); +void mypaint_tiled_surface_end_atomic(MyPaintTiledSurface *self, MyPaintRectangle *roi); + +G_END_DECLS + +#endif // MYPAINTTILEDSURFACE_H diff --git a/thirdparty/libmypaint/dist/32/libiconv-2.dll b/thirdparty/libmypaint/dist/32/libiconv-2.dll new file mode 100755 index 0000000..9f62fac --- /dev/null +++ b/thirdparty/libmypaint/dist/32/libiconv-2.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3078c54ef5c185ca5fe25d9dddc15a258bf46357b1951132b042ef661b2bc936 +size 1101423 diff --git a/thirdparty/libmypaint/dist/32/libintl-8.dll b/thirdparty/libmypaint/dist/32/libintl-8.dll new file mode 100755 index 0000000..59fbc5a --- /dev/null +++ b/thirdparty/libmypaint/dist/32/libintl-8.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb73cf22089da6390c1def079b58e7b73cb27ce7902e48883f5becae20df97b2 +size 333677 diff --git a/thirdparty/libmypaint/dist/32/libjson-c-2.dll b/thirdparty/libmypaint/dist/32/libjson-c-2.dll new file mode 100755 index 0000000..87f1866 --- /dev/null +++ b/thirdparty/libmypaint/dist/32/libjson-c-2.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03e90abbbc0c72b3832b7cb1fb62df3bc41d9fc170caf1eec777a69857dffd29 +size 216247 diff --git a/thirdparty/libmypaint/dist/32/libmypaint-1-4-0.dll b/thirdparty/libmypaint/dist/32/libmypaint-1-4-0.dll new file mode 100755 index 0000000..c6fc3f6 --- /dev/null +++ b/thirdparty/libmypaint/dist/32/libmypaint-1-4-0.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:426748f0de42310541d59537396caf7f6e8c194b1c4481e29f5522407c4e0d32 +size 306114 diff --git a/thirdparty/libmypaint/dist/32/libmypaint.lib b/thirdparty/libmypaint/dist/32/libmypaint.lib new file mode 100755 index 0000000..7537481 --- /dev/null +++ b/thirdparty/libmypaint/dist/32/libmypaint.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c2ce3325bab78ac76de865e39276ccc35b16b053224d5d651e007a8672c59de +size 86606 diff --git a/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-brush-settings-gen.h b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-brush-settings-gen.h new file mode 100644 index 0000000..77e0932 --- /dev/null +++ b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-brush-settings-gen.h @@ -0,0 +1,98 @@ +// DO NOT EDIT - autogenerated by generate.py + +typedef enum { + MYPAINT_BRUSH_INPUT_PRESSURE, + MYPAINT_BRUSH_INPUT_SPEED1, + MYPAINT_BRUSH_INPUT_SPEED2, + MYPAINT_BRUSH_INPUT_RANDOM, + MYPAINT_BRUSH_INPUT_STROKE, + MYPAINT_BRUSH_INPUT_DIRECTION, + MYPAINT_BRUSH_INPUT_TILT_DECLINATION, + MYPAINT_BRUSH_INPUT_TILT_ASCENSION, + MYPAINT_BRUSH_INPUT_CUSTOM, + MYPAINT_BRUSH_INPUTS_COUNT +} MyPaintBrushInput; + +typedef enum { + MYPAINT_BRUSH_SETTING_OPAQUE, + MYPAINT_BRUSH_SETTING_OPAQUE_MULTIPLY, + MYPAINT_BRUSH_SETTING_OPAQUE_LINEARIZE, + MYPAINT_BRUSH_SETTING_RADIUS_LOGARITHMIC, + MYPAINT_BRUSH_SETTING_HARDNESS, + MYPAINT_BRUSH_SETTING_ANTI_ALIASING, + MYPAINT_BRUSH_SETTING_DABS_PER_BASIC_RADIUS, + MYPAINT_BRUSH_SETTING_DABS_PER_ACTUAL_RADIUS, + MYPAINT_BRUSH_SETTING_DABS_PER_SECOND, + MYPAINT_BRUSH_SETTING_RADIUS_BY_RANDOM, + MYPAINT_BRUSH_SETTING_SPEED1_SLOWNESS, + MYPAINT_BRUSH_SETTING_SPEED2_SLOWNESS, + MYPAINT_BRUSH_SETTING_SPEED1_GAMMA, + MYPAINT_BRUSH_SETTING_SPEED2_GAMMA, + MYPAINT_BRUSH_SETTING_OFFSET_BY_RANDOM, + MYPAINT_BRUSH_SETTING_OFFSET_BY_SPEED, + MYPAINT_BRUSH_SETTING_OFFSET_BY_SPEED_SLOWNESS, + MYPAINT_BRUSH_SETTING_SLOW_TRACKING, + MYPAINT_BRUSH_SETTING_SLOW_TRACKING_PER_DAB, + MYPAINT_BRUSH_SETTING_TRACKING_NOISE, + MYPAINT_BRUSH_SETTING_COLOR_H, + MYPAINT_BRUSH_SETTING_COLOR_S, + MYPAINT_BRUSH_SETTING_COLOR_V, + MYPAINT_BRUSH_SETTING_RESTORE_COLOR, + MYPAINT_BRUSH_SETTING_CHANGE_COLOR_H, + MYPAINT_BRUSH_SETTING_CHANGE_COLOR_L, + MYPAINT_BRUSH_SETTING_CHANGE_COLOR_HSL_S, + MYPAINT_BRUSH_SETTING_CHANGE_COLOR_V, + MYPAINT_BRUSH_SETTING_CHANGE_COLOR_HSV_S, + MYPAINT_BRUSH_SETTING_SMUDGE, + MYPAINT_BRUSH_SETTING_SMUDGE_LENGTH, + MYPAINT_BRUSH_SETTING_SMUDGE_RADIUS_LOG, + MYPAINT_BRUSH_SETTING_ERASER, + MYPAINT_BRUSH_SETTING_STROKE_THRESHOLD, + MYPAINT_BRUSH_SETTING_STROKE_DURATION_LOGARITHMIC, + MYPAINT_BRUSH_SETTING_STROKE_HOLDTIME, + MYPAINT_BRUSH_SETTING_CUSTOM_INPUT, + MYPAINT_BRUSH_SETTING_CUSTOM_INPUT_SLOWNESS, + MYPAINT_BRUSH_SETTING_ELLIPTICAL_DAB_RATIO, + MYPAINT_BRUSH_SETTING_ELLIPTICAL_DAB_ANGLE, + MYPAINT_BRUSH_SETTING_DIRECTION_FILTER, + MYPAINT_BRUSH_SETTING_LOCK_ALPHA, + MYPAINT_BRUSH_SETTING_COLORIZE, + MYPAINT_BRUSH_SETTING_SNAP_TO_PIXEL, + MYPAINT_BRUSH_SETTING_PRESSURE_GAIN_LOG, + MYPAINT_BRUSH_SETTINGS_COUNT +} MyPaintBrushSetting; + +typedef enum { + MYPAINT_BRUSH_STATE_X, + MYPAINT_BRUSH_STATE_Y, + MYPAINT_BRUSH_STATE_PRESSURE, + MYPAINT_BRUSH_STATE_PARTIAL_DABS, + MYPAINT_BRUSH_STATE_ACTUAL_RADIUS, + MYPAINT_BRUSH_STATE_SMUDGE_RA, + MYPAINT_BRUSH_STATE_SMUDGE_GA, + MYPAINT_BRUSH_STATE_SMUDGE_BA, + MYPAINT_BRUSH_STATE_SMUDGE_A, + MYPAINT_BRUSH_STATE_LAST_GETCOLOR_R, + MYPAINT_BRUSH_STATE_LAST_GETCOLOR_G, + MYPAINT_BRUSH_STATE_LAST_GETCOLOR_B, + MYPAINT_BRUSH_STATE_LAST_GETCOLOR_A, + MYPAINT_BRUSH_STATE_LAST_GETCOLOR_RECENTNESS, + MYPAINT_BRUSH_STATE_ACTUAL_X, + MYPAINT_BRUSH_STATE_ACTUAL_Y, + MYPAINT_BRUSH_STATE_NORM_DX_SLOW, + MYPAINT_BRUSH_STATE_NORM_DY_SLOW, + MYPAINT_BRUSH_STATE_NORM_SPEED1_SLOW, + MYPAINT_BRUSH_STATE_NORM_SPEED2_SLOW, + MYPAINT_BRUSH_STATE_STROKE, + MYPAINT_BRUSH_STATE_STROKE_STARTED, + MYPAINT_BRUSH_STATE_CUSTOM_INPUT, + MYPAINT_BRUSH_STATE_RNG_SEED, + MYPAINT_BRUSH_STATE_ACTUAL_ELLIPTICAL_DAB_RATIO, + MYPAINT_BRUSH_STATE_ACTUAL_ELLIPTICAL_DAB_ANGLE, + MYPAINT_BRUSH_STATE_DIRECTION_DX, + MYPAINT_BRUSH_STATE_DIRECTION_DY, + MYPAINT_BRUSH_STATE_DECLINATION, + MYPAINT_BRUSH_STATE_ASCENSION, + MYPAINT_BRUSH_STATES_COUNT +} MyPaintBrushState; + diff --git a/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-brush-settings.h b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-brush-settings.h new file mode 100644 index 0000000..221d257 --- /dev/null +++ b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-brush-settings.h @@ -0,0 +1,71 @@ +#ifndef MYPAINTBRUSHSETTINGS_H +#define MYPAINTBRUSHSETTINGS_H + +/* libmypaint - The MyPaint Brush Library + * Copyright (C) 2012 Jon Nordby + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include + +G_BEGIN_DECLS + +typedef struct { + const gchar *cname; + const gchar *name; // FIXME: needs to be accessed through gettext + gboolean constant; + float min; + float def; // default + float max; + const gchar *tooltip; // FIXME: needs to be accessed through gettext +} MyPaintBrushSettingInfo; + +const MyPaintBrushSettingInfo * +mypaint_brush_setting_info(MyPaintBrushSetting id); + +const gchar * +mypaint_brush_setting_info_get_name(const MyPaintBrushSettingInfo *self); +const gchar * +mypaint_brush_setting_info_get_tooltip(const MyPaintBrushSettingInfo *self); +MyPaintBrushSetting +mypaint_brush_setting_from_cname(const char *cname); + +typedef struct { + const gchar *cname; + float hard_min; + float soft_min; + float normal; + float soft_max; + float hard_max; + const gchar *name; // FIXME: needs to be accessed through gettext + const gchar *tooltip; // FIXME: needs to be accessed through gettext +} MyPaintBrushInputInfo; + +const MyPaintBrushInputInfo * +mypaint_brush_input_info(MyPaintBrushInput id); + +const gchar * +mypaint_brush_input_info_get_name(const MyPaintBrushInputInfo *self); + +const gchar * +mypaint_brush_input_info_get_tooltip(const MyPaintBrushInputInfo *self); + +MyPaintBrushInput +mypaint_brush_input_from_cname(const char *cname); + +G_END_DECLS + +#endif // MYPAINTBRUSHSETTINGS_H diff --git a/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-brush.h b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-brush.h new file mode 100644 index 0000000..837ed03 --- /dev/null +++ b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-brush.h @@ -0,0 +1,93 @@ +#ifndef MYPAINTBRUSH_H +#define MYPAINTBRUSH_H + +/* libmypaint - The MyPaint Brush Library + * Copyright (C) 2008 Martin Renold + * Copyright (C) 2012 Jon Nordby + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include + +G_BEGIN_DECLS + +typedef struct MyPaintBrush MyPaintBrush; + +MyPaintBrush * +mypaint_brush_new(void); + +void +mypaint_brush_unref(MyPaintBrush *self); +void +mypaint_brush_ref(MyPaintBrush *self); + +void +mypaint_brush_reset(MyPaintBrush *self); + +void +mypaint_brush_new_stroke(MyPaintBrush *self); + +int +mypaint_brush_stroke_to(MyPaintBrush *self, MyPaintSurface *surface, float x, float y, + float pressure, float xtilt, float ytilt, double dtime); + +void +mypaint_brush_set_base_value(MyPaintBrush *self, MyPaintBrushSetting id, float value); + +float +mypaint_brush_get_base_value(MyPaintBrush *self, MyPaintBrushSetting id); + +gboolean +mypaint_brush_is_constant(MyPaintBrush *self, MyPaintBrushSetting id); + +int +mypaint_brush_get_inputs_used_n(MyPaintBrush *self, MyPaintBrushSetting id); + +void +mypaint_brush_set_mapping_n(MyPaintBrush *self, MyPaintBrushSetting id, MyPaintBrushInput input, int n); + +int +mypaint_brush_get_mapping_n(MyPaintBrush *self, MyPaintBrushSetting id, MyPaintBrushInput input); + +void +mypaint_brush_set_mapping_point(MyPaintBrush *self, MyPaintBrushSetting id, MyPaintBrushInput input, int index, float x, float y); + +void +mypaint_brush_get_mapping_point(MyPaintBrush *self, MyPaintBrushSetting id, MyPaintBrushInput input, int index, float *x, float *y); + +float +mypaint_brush_get_state(MyPaintBrush *self, MyPaintBrushState i); + +void +mypaint_brush_set_state(MyPaintBrush *self, MyPaintBrushState i, float value); + +double +mypaint_brush_get_total_stroke_painting_time(MyPaintBrush *self); + +void +mypaint_brush_set_print_inputs(MyPaintBrush *self, gboolean enabled); + +void +mypaint_brush_from_defaults(MyPaintBrush *self); + + +gboolean +mypaint_brush_from_string(MyPaintBrush *self, const char *string); + + +G_END_DECLS + +#endif // MYPAINTBRUSH_H diff --git a/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-config.h b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-config.h new file mode 100644 index 0000000..55e6093 --- /dev/null +++ b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-config.h @@ -0,0 +1,16 @@ +#ifndef MYPAINTCONFIG_H +#define MYPAINTCONFIG_H + +#ifndef MYPAINT_TILE_SIZE +#define MYPAINT_TILE_SIZE 64 +#endif + +#ifndef MYPAINT_MAX_THREADS +#define MYPAINT_MAX_THREADS 16 +#endif + +#ifndef MYPAINT_MAX_MIPMAP_LEVEL +#define MYPAINT_MAX_MIPMAP_LEVEL 4 +#endif + +#endif /* MYPAINTCONFIG_H */ diff --git a/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-fixed-tiled-surface.h b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-fixed-tiled-surface.h new file mode 100644 index 0000000..53445ff --- /dev/null +++ b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-fixed-tiled-surface.h @@ -0,0 +1,34 @@ +#ifndef MYPAINTFIXEDTILEDSURFACE_H +#define MYPAINTFIXEDTILEDSURFACE_H + +#include +#include +#include + +G_BEGIN_DECLS + +/** + * MyPaintFixedTiledSurface: + * + * Simple #MyPaintTiledSurface subclass that implements a fixed sized #MyPaintSurface. + * Only intended for testing and trivial use-cases, and to serve as an example of + * how to implement a tiled surface subclass. + */ +typedef struct MyPaintFixedTiledSurface MyPaintFixedTiledSurface; + +MyPaintFixedTiledSurface * +mypaint_fixed_tiled_surface_new(int width, int height); + +int +mypaint_fixed_tiled_surface_get_width(MyPaintFixedTiledSurface *self); + +int +mypaint_fixed_tiled_surface_get_height(MyPaintFixedTiledSurface *self); + + +MyPaintSurface * +mypaint_fixed_tiled_surface_interface(MyPaintFixedTiledSurface *self); + +G_END_DECLS + +#endif // MYPAINTFIXEDTILEDSURFACE_H diff --git a/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-glib-compat.h b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-glib-compat.h new file mode 100644 index 0000000..bded620 --- /dev/null +++ b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-glib-compat.h @@ -0,0 +1,32 @@ +#ifndef MYPAINTGLIBCOMPAT_H +#define MYPAINTGLIBCOMPAT_H + +#include + +#ifndef __G_LIB_H__ + +/* From $INCLUDEPATH/glib-2.0/glib/gmacros.h */ +#ifdef __cplusplus +# define G_BEGIN_DECLS extern "C" { +# define G_END_DECLS } +#else +# define G_BEGIN_DECLS +# define G_END_DECLS +#endif + +#define FALSE (0) +#define TRUE (!FALSE) + +typedef void * gpointer; + +/* From $INCLUDEPATH/glib-2.0/glib/gtypes.h */ +typedef char gchar; +typedef int gint; +typedef gint gboolean; + +/* From $LIBPATH/glib-2.0/include/glibconfig.h */ +typedef unsigned short guint16; + +#endif // __G_LIB_H__ + +#endif // MYPAINTGLIBCOMPAT_H diff --git a/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-mapping.h b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-mapping.h new file mode 100644 index 0000000..a58e5d1 --- /dev/null +++ b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-mapping.h @@ -0,0 +1,27 @@ +#ifndef MAPPING_H +#define MAPPING_H + +#include +#include + +G_BEGIN_DECLS + +typedef struct MyPaintMapping MyPaintMapping; + +MyPaintMapping * mypaint_mapping_new(int inputs_); +void mypaint_mapping_free(MyPaintMapping *self); +float mypaint_mapping_get_base_value(MyPaintMapping *self); +void mypaint_mapping_set_base_value(MyPaintMapping *self, float value); +void mypaint_mapping_set_n (MyPaintMapping * self, int input, int n); +int mypaint_mapping_get_n (MyPaintMapping * self, int input); +void mypaint_mapping_set_point (MyPaintMapping * self, int input, int index, float x, float y); +void mypaint_mapping_get_point (MyPaintMapping * self, int input, int index, float *x, float *y); +gboolean mypaint_mapping_is_constant(MyPaintMapping * self); +int mypaint_mapping_get_inputs_used_n(MyPaintMapping *self); +float mypaint_mapping_calculate (MyPaintMapping * self, float * data); +float mypaint_mapping_calculate_single_input (MyPaintMapping * self, float input); + + +G_END_DECLS + +#endif // MAPPING_H diff --git a/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-rectangle.h b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-rectangle.h new file mode 100644 index 0000000..e08c68e --- /dev/null +++ b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-rectangle.h @@ -0,0 +1,39 @@ +#ifndef MYPAINTRECTANGLE_H +#define MYPAINTRECTANGLE_H + +/* libmypaint - The MyPaint Brush Library + * Copyright (C) 2008 Martin Renold + * Copyright (C) 2012 Jon Nordby + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include + +G_BEGIN_DECLS + +typedef struct { + int x; + int y; + int width; + int height; +} MyPaintRectangle; + +void mypaint_rectangle_expand_to_include_point(MyPaintRectangle *r, int x, int y); +MyPaintRectangle * +mypaint_rectangle_copy(MyPaintRectangle *self); + +G_END_DECLS + +#endif // MYPAINTRECTANGLE_H diff --git a/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-surface.h b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-surface.h new file mode 100644 index 0000000..1217a76 --- /dev/null +++ b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-surface.h @@ -0,0 +1,109 @@ +#ifndef MYPAINTSURFACE_H +#define MYPAINTSURFACE_H + +/* libmypaint - The MyPaint Brush Library + * Copyright (C) 2008 Martin Renold + * Copyright (C) 2012 Jon Nordby + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include + +G_BEGIN_DECLS + +typedef struct MyPaintSurface MyPaintSurface; + +typedef void (*MyPaintSurfaceGetColorFunction) (MyPaintSurface *self, + float x, float y, + float radius, + float * color_r, float * color_g, float * color_b, float * color_a + ); +typedef int (*MyPaintSurfaceDrawDabFunction) (MyPaintSurface *self, + float x, float y, + float radius, + float color_r, float color_g, float color_b, + float opaque, float hardness, + float alpha_eraser, + float aspect_ratio, float angle, + float lock_alpha, + float colorize); + +typedef void (*MyPaintSurfaceDestroyFunction) (MyPaintSurface *self); + +typedef void (*MyPaintSurfaceSavePngFunction) (MyPaintSurface *self, const char *path, int x, int y, int width, int height); + +typedef void (*MyPaintSurfaceBeginAtomicFunction) (MyPaintSurface *self); + +typedef void (*MyPaintSurfaceEndAtomicFunction) (MyPaintSurface *self, MyPaintRectangle *roi); + +/** + * MyPaintSurface: + * + * Abstract surface type for the MyPaint brush engine. The surface interface + * lets the brush engine specify dabs to render, and to pick color. + */ +struct MyPaintSurface { + MyPaintSurfaceDrawDabFunction draw_dab; + MyPaintSurfaceGetColorFunction get_color; + MyPaintSurfaceBeginAtomicFunction begin_atomic; + MyPaintSurfaceEndAtomicFunction end_atomic; + MyPaintSurfaceDestroyFunction destroy; + MyPaintSurfaceSavePngFunction save_png; + int refcount; +}; + +/** + * mypaint_surface_draw_dab: + * + * Draw a dab onto the surface. + */ +int +mypaint_surface_draw_dab(MyPaintSurface *self, + float x, float y, + float radius, + float color_r, float color_g, float color_b, + float opaque, float hardness, + float alpha_eraser, + float aspect_ratio, float angle, + float lock_alpha, + float colorize + ); + + +void +mypaint_surface_get_color(MyPaintSurface *self, + float x, float y, + float radius, + float * color_r, float * color_g, float * color_b, float * color_a + ); + +float +mypaint_surface_get_alpha (MyPaintSurface *self, float x, float y, float radius); + +void +mypaint_surface_save_png(MyPaintSurface *self, const char *path, int x, int y, int width, int height); + +void mypaint_surface_begin_atomic(MyPaintSurface *self); + +void mypaint_surface_end_atomic(MyPaintSurface *self, MyPaintRectangle *roi); + +void mypaint_surface_init(MyPaintSurface *self); +void mypaint_surface_ref(MyPaintSurface *self); +void mypaint_surface_unref(MyPaintSurface *self); + +G_END_DECLS + +#endif // MYPAINTSURFACE_H + diff --git a/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-tiled-surface.h b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-tiled-surface.h new file mode 100644 index 0000000..b225f7b --- /dev/null +++ b/thirdparty/libmypaint/dist/64/include/libmypaint/mypaint-tiled-surface.h @@ -0,0 +1,86 @@ +#ifndef MYPAINTTILEDSURFACE_H +#define MYPAINTTILEDSURFACE_H + +#include +#include +#include + +typedef enum { + MYPAINT_SYMMETRY_TYPE_VERTICAL, + MYPAINT_SYMMETRY_TYPE_HORIZONTAL, + MYPAINT_SYMMETRY_TYPE_VERTHORZ, + MYPAINT_SYMMETRY_TYPE_ROTATIONAL, + MYPAINT_SYMMETRY_TYPE_SNOWFLAKE, + MYPAINT_SYMMETRY_TYPES_COUNT +} MyPaintSymmetryType; + +G_BEGIN_DECLS + +typedef struct MyPaintTiledSurface MyPaintTiledSurface; + +typedef struct { + int tx; + int ty; + gboolean readonly; + guint16 *buffer; + gpointer context; /* Only to be used by the surface implemenations. */ + int thread_id; + int mipmap_level; +} MyPaintTileRequest; + +void +mypaint_tile_request_init(MyPaintTileRequest *data, int level, + int tx, int ty, gboolean readonly); + +typedef void (*MyPaintTileRequestStartFunction) (MyPaintTiledSurface *self, MyPaintTileRequest *request); +typedef void (*MyPaintTileRequestEndFunction) (MyPaintTiledSurface *self, MyPaintTileRequest *request); +typedef void (*MyPaintTiledSurfaceAreaChanged) (MyPaintTiledSurface *self, int bb_x, int bb_y, int bb_w, int bb_h); + +/** + * MyPaintTiledSurface: + * + * Interface and convenience class for implementing a #MyPaintSurface backed by a tile store. + * + * The size of the surface is infinite, and consumers need just implement two vfuncs. + */ +struct MyPaintTiledSurface { + MyPaintSurface parent; + /* private: */ + MyPaintTileRequestStartFunction tile_request_start; + MyPaintTileRequestEndFunction tile_request_end; + gboolean surface_do_symmetry; + MyPaintSymmetryType symmetry_type; + float surface_center_x; + float surface_center_y; + int rot_symmetry_lines; + struct OperationQueue *operation_queue; + MyPaintRectangle dirty_bbox; + gboolean threadsafe_tile_requests; + int tile_size; +}; + +void +mypaint_tiled_surface_init(MyPaintTiledSurface *self, + MyPaintTileRequestStartFunction tile_request_start, + MyPaintTileRequestEndFunction tile_request_end); + +void +mypaint_tiled_surface_destroy(MyPaintTiledSurface *self); + +void +mypaint_tiled_surface_set_symmetry_state(MyPaintTiledSurface *self, gboolean active, + float center_x, float center_y, + MyPaintSymmetryType symmetry_type, + int rot_symmetry_lines); +float +mypaint_tiled_surface_get_alpha (MyPaintTiledSurface *self, float x, float y, float radius); + +void mypaint_tiled_surface_tile_request_start(MyPaintTiledSurface *self, MyPaintTileRequest *request); +void mypaint_tiled_surface_tile_request_end(MyPaintTiledSurface *self, MyPaintTileRequest *request); + +void mypaint_tiled_surface_begin_atomic(MyPaintTiledSurface *self); +void mypaint_tiled_surface_end_atomic(MyPaintTiledSurface *self, MyPaintRectangle *roi); + +G_END_DECLS + +#endif // MYPAINTTILEDSURFACE_H diff --git a/thirdparty/libmypaint/dist/64/libiconv-2.dll b/thirdparty/libmypaint/dist/64/libiconv-2.dll new file mode 100755 index 0000000..9585920 --- /dev/null +++ b/thirdparty/libmypaint/dist/64/libiconv-2.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4093b53b91565729564d539403aca91737ee094f902be60b6e261d78a67f0fae +size 1157325 diff --git a/thirdparty/libmypaint/dist/64/libintl-8.dll b/thirdparty/libmypaint/dist/64/libintl-8.dll new file mode 100755 index 0000000..3f7f8d6 --- /dev/null +++ b/thirdparty/libmypaint/dist/64/libintl-8.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8eb37af030cff310ff94a43b68a16e0336af0828b62d1bd35e9e26bb2d2aad69 +size 404063 diff --git a/thirdparty/libmypaint/dist/64/libjson-c-2.dll b/thirdparty/libmypaint/dist/64/libjson-c-2.dll new file mode 100755 index 0000000..7af6fa0 --- /dev/null +++ b/thirdparty/libmypaint/dist/64/libjson-c-2.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d8e9efd3f204804c88f362d20b182e3c222a025b28a811b8dc3abf627f6fd36 +size 276980 diff --git a/thirdparty/libmypaint/dist/64/libmypaint-1-4-0.dll b/thirdparty/libmypaint/dist/64/libmypaint-1-4-0.dll new file mode 100755 index 0000000..9420a1a --- /dev/null +++ b/thirdparty/libmypaint/dist/64/libmypaint-1-4-0.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2747ff3cd4d107bcc7ddbd73099aac91b2b5bbcd69f1839f4d79418356d667b1 +size 392455 diff --git a/thirdparty/libmypaint/dist/64/libmypaint.lib b/thirdparty/libmypaint/dist/64/libmypaint.lib new file mode 100755 index 0000000..fac0dfa --- /dev/null +++ b/thirdparty/libmypaint/dist/64/libmypaint.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:704fc5310b5a3f0b7b77ce530f39a04b0d1c07d0cdfe26dad79159cf01f4a2a6 +size 84848 diff --git a/thirdparty/libmypaint/download-all.sh b/thirdparty/libmypaint/download-all.sh new file mode 100755 index 0000000..fa95a15 --- /dev/null +++ b/thirdparty/libmypaint/download-all.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +set -e + +echo "" +echo "download" +echo "" + +mkdir -p download && cd download + +wget -c https://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.7.tar.gz +wget -c https://s3.amazonaws.com/json-c_releases/releases/json-c-0.12.1.tar.gz +wget -c https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz + +cd .. + +echo "" +echo "unpack" +echo "" + +mkdir -p src && cd src + +rm -rf gettext-0.19.7 +tar -xzf ../download/gettext-0.19.7.tar.gz +rm -rf json-c-0.12.1 +tar -xzf ../download/json-c-0.12.1.tar.gz +rm -rf libiconv-1.15 +tar -xzf ../download/libiconv-1.15.tar.gz + +echo "" +echo "checkout libmypaint" +echo "" + +BRANCH="testing" +if [ -d "libmypaint/.git" ]; then + cd libmypaint && git fetch && git reset --hard "origin/$BRANCH" && cd .. +else + git clone https://github.com/blackwarthog/libmypaint.git --branch $BRANCH +fi + +cd .. + +echo "" +echo "success" +echo "" diff --git a/thirdparty/libmypaint/license/gettext-0.19.7/gettext-runtime/intl/AUTHORS b/thirdparty/libmypaint/license/gettext-0.19.7/gettext-runtime/intl/AUTHORS new file mode 100644 index 0000000..ee09305 --- /dev/null +++ b/thirdparty/libmypaint/license/gettext-0.19.7/gettext-runtime/intl/AUTHORS @@ -0,0 +1 @@ +Ulrich Drepper diff --git a/thirdparty/libmypaint/license/gettext-0.19.7/gettext-runtime/intl/COPYING_LIB b/thirdparty/libmypaint/license/gettext-0.19.7/gettext-runtime/intl/COPYING_LIB new file mode 100644 index 0000000..c2c87d6 --- /dev/null +++ b/thirdparty/libmypaint/license/gettext-0.19.7/gettext-runtime/intl/COPYING_LIB @@ -0,0 +1,516 @@ + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations +below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. +^L + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it +becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. +^L + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control +compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. +^L + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. +^L + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. +^L + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. +^L + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply, and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License +may add an explicit geographical distribution limitation excluding those +countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. +^L + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS +^L + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms +of the ordinary General Public License). + + To apply these terms, attach the following notices to the library. +It is safest to attach them to the start of each source file to most +effectively convey the exclusion of warranty; and each file should +have at least the "copyright" line and a pointer to where the full +notice is found. + + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA + +Also add information on how to contact you by electronic and paper +mail. + +You should also get your employer (if you work as a programmer) or +your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James +Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/thirdparty/libmypaint/license/json-c-0.12.1/AUTHORS b/thirdparty/libmypaint/license/json-c-0.12.1/AUTHORS new file mode 100644 index 0000000..b389989 --- /dev/null +++ b/thirdparty/libmypaint/license/json-c-0.12.1/AUTHORS @@ -0,0 +1,5 @@ +Michael Clark +Jehiah Czebotar +Eric Haszlakiewicz +C. Watford (christopher.watford@gmail.com) + diff --git a/thirdparty/libmypaint/license/json-c-0.12.1/COPYING b/thirdparty/libmypaint/license/json-c-0.12.1/COPYING new file mode 100644 index 0000000..740d125 --- /dev/null +++ b/thirdparty/libmypaint/license/json-c-0.12.1/COPYING @@ -0,0 +1,42 @@ + +Copyright (c) 2009-2012 Eric Haszlakiewicz + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +---------------------------------------------------------------- + +Copyright (c) 2004, 2005 Metaparadigm Pte Ltd + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/thirdparty/libmypaint/license/libiconv-1.15/AUTHORS b/thirdparty/libmypaint/license/libiconv-1.15/AUTHORS new file mode 100644 index 0000000..8bedd79 --- /dev/null +++ b/thirdparty/libmypaint/license/libiconv-1.15/AUTHORS @@ -0,0 +1 @@ +Bruno Haible diff --git a/thirdparty/libmypaint/license/libiconv-1.15/COPYING_LIB b/thirdparty/libmypaint/license/libiconv-1.15/COPYING_LIB new file mode 100644 index 0000000..778d0bb --- /dev/null +++ b/thirdparty/libmypaint/license/libiconv-1.15/COPYING_LIB @@ -0,0 +1,482 @@ + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/thirdparty/libmypaint/license/libiconv-1.15/README b/thirdparty/libmypaint/license/libiconv-1.15/README new file mode 100644 index 0000000..19f8370 --- /dev/null +++ b/thirdparty/libmypaint/license/libiconv-1.15/README @@ -0,0 +1,172 @@ + GNU LIBICONV - character set conversion library + +This library provides an iconv() implementation, for use on systems which +don't have one, or whose implementation cannot convert from/to Unicode. + +It provides support for the encodings: + + European languages + ASCII, ISO-8859-{1,2,3,4,5,7,9,10,13,14,15,16}, + KOI8-R, KOI8-U, KOI8-RU, + CP{1250,1251,1252,1253,1254,1257}, CP{850,866,1131}, + Mac{Roman,CentralEurope,Iceland,Croatian,Romania}, + Mac{Cyrillic,Ukraine,Greek,Turkish}, + Macintosh + Semitic languages + ISO-8859-{6,8}, CP{1255,1256}, CP862, Mac{Hebrew,Arabic} + Japanese + EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-1, + ISO-2022-JP-MS + Chinese + EUC-CN, HZ, GBK, CP936, GB18030, EUC-TW, BIG5, CP950, BIG5-HKSCS, + BIG5-HKSCS:2004, BIG5-HKSCS:2001, BIG5-HKSCS:1999, ISO-2022-CN, + ISO-2022-CN-EXT + Korean + EUC-KR, CP949, ISO-2022-KR, JOHAB + Armenian + ARMSCII-8 + Georgian + Georgian-Academy, Georgian-PS + Tajik + KOI8-T + Kazakh + PT154, RK1048 + Thai + ISO-8859-11, TIS-620, CP874, MacThai + Laotian + MuleLao-1, CP1133 + Vietnamese + VISCII, TCVN, CP1258 + Platform specifics + HP-ROMAN8, NEXTSTEP + Full Unicode + UTF-8 + UCS-2, UCS-2BE, UCS-2LE + UCS-4, UCS-4BE, UCS-4LE + UTF-16, UTF-16BE, UTF-16LE + UTF-32, UTF-32BE, UTF-32LE + UTF-7 + C99, JAVA + Full Unicode, in terms of 'uint16_t' or 'uint32_t' + (with machine dependent endianness and alignment) + UCS-2-INTERNAL, UCS-4-INTERNAL + Locale dependent, in terms of 'char' or 'wchar_t' + (with machine dependent endianness and alignment, and with OS and + locale dependent semantics) + char, wchar_t + The empty encoding name "" is equivalent to "char": it denotes the + locale dependent character encoding. + +When configured with the option --enable-extra-encodings, it also provides +support for a few extra encodings: + + European languages + CP{437,737,775,852,853,855,857,858,860,861,863,865,869,1125} + Semitic languages + CP864 + Japanese + EUC-JISX0213, Shift_JISX0213, ISO-2022-JP-3 + Chinese + BIG5-2003 (experimental) + Turkmen + TDS565 + Platform specifics + ATARIST, RISCOS-LATIN1 + +It can convert from any of these encodings to any other, through Unicode +conversion. + +It has also some limited support for transliteration, i.e. when a character +cannot be represented in the target character set, it can be approximated +through one or several similarly looking characters. Transliteration is +activated when "//TRANSLIT" is appended to the target encoding name. + +libiconv is for you if your application needs to support multiple character +encodings, but that support lacks from your system. + + +Installation +------------ + +As usual for GNU packages: + + $ ./configure --prefix=/usr/local + $ make + $ make install + +After installing GNU libiconv for the first time, it is recommended to +recompile and reinstall GNU gettext, so that it can take advantage of +libiconv. + +On systems other than GNU/Linux, the iconv program will be internationalized +only if GNU gettext has been built and installed before GNU libiconv. This +means that the first time GNU libiconv is installed, we have a circular +dependency between the GNU libiconv and GNU gettext packages, which can be +resolved by building and installing either + - first libiconv, then gettext, then libiconv again, +or (on systems supporting shared libraries, excluding AIX) + - first gettext, then libiconv, then gettext again. +Recall that before building a package for the second time, you need to erase +the traces of the first build by running "make distclean". + +This library can be built and installed in two variants: + + - The library mode. This works on all systems, and uses a library + 'libiconv.so' and a header file ''. (Both are installed + through "make install".) + + To use it, simply #include and use the functions. + + To use it in an autoconfiguring package: + - If you don't use automake, append m4/iconv.m4 to your aclocal.m4 + file. + - If you do use automake, add m4/iconv.m4 to your m4 macro repository. + - Add to the link command line of libraries and executables that use + the functions the placeholder @LIBICONV@ (or, if using libtool for + the link, @LTLIBICONV@). If you use automake, the right place for + these additions are the *_LDADD variables. + Note that 'iconv.m4' is also part of the GNU gettext package, which + installs it in /usr/local/share/aclocal/iconv.m4. + + - The libc plug/override mode. This works on GNU/Linux, Solaris and OSF/1 + systems only. It is a way to get good iconv support without having + glibc-2.1. + It installs a library 'preloadable_libiconv.so'. This library can be used + with LD_PRELOAD, to override the iconv* functions present in the C library. + + On GNU/Linux and Solaris: + $ export LD_PRELOAD=/usr/local/lib/preloadable_libiconv.so + + On OSF/1: + $ export _RLD_LIST=/usr/local/lib/preloadable_libiconv.so:DEFAULT + + A program's source need not be modified, the program need not even be + recompiled. Just set the LD_PRELOAD environment variable, that's it! + + +Copyright +--------- + +The libiconv and libcharset _libraries_ and their header files are under LGPL, +see file COPYING.LIB. + +The iconv _program_ and the documentation are under GPL, see file COPYING. + + +Download +-------- + + http://ftp.gnu.org/gnu/libiconv/libiconv-1.15.tar.gz + +Homepage +-------- + + http://www.gnu.org/software/libiconv/ + +Bug reports to +-------------- + + + + +Bruno Haible diff --git a/thirdparty/libmypaint/license/libmypaint/COPYING b/thirdparty/libmypaint/license/libmypaint/COPYING new file mode 100644 index 0000000..542c9a6 --- /dev/null +++ b/thirdparty/libmypaint/license/libmypaint/COPYING @@ -0,0 +1,14 @@ +libmypaint - The MyPaint Brush Library +Copyright (C) 2008-2011 Martin Renold and contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/thirdparty/libmypaint/mingw-vars.sh b/thirdparty/libmypaint/mingw-vars.sh new file mode 100644 index 0000000..2903331 --- /dev/null +++ b/thirdparty/libmypaint/mingw-vars.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +set -e + +[ ! -z "$HOST" ] || (echo "host was not set" && false) + +mkdir -p "$INST_DIR" +mkdir -p "$DIST_DIR" +export PREFIX="$INST_DIR" + +EXTRA_CPP_OPTIONS= + +export PATH="/usr/$HOST/bin:/usr/$HOST/sys-root/mingw/bin:$PATH" +export LD_LIBRARY_PATH="/usr/$HOST/sys-root/mingw/lib:$LD_LIBRARY_PATH" + +export ADDR2LINE=/usr/bin/$HOST-addr2line +export AS=/usr/bin/$HOST-as +export AR=/usr/bin/$HOST-ar +export CC=/usr/bin/$HOST-gcc +export CXXFILT=/usr/bin/$HOST-c++filt +export CXX=/usr/bin/$HOST-c++ +export CPP=/usr/bin/$HOST-cpp +export DLLTOOL=/usr/bin/$HOST-dlltool +export DLLWRAP=/usr/bin/$HOST-dllwrap +export ELFEDIT=/usr/bin/$HOST-elfedit +export FORTRAN=/usr/bin/$HOST-gfortran +export GXX=/usr/bin/$HOST-g++ +export GCC=/usr/bin/$HOST-gcc +export GCOV=/usr/bin/$HOST-gcov +export GCOV_TOOL=/usr/bin/$HOST-gcov-tool +export GFORTRAN=/usr/bin/$HOST-gfortran +export GPROF=/usr/bin/$HOST-gprof +export LD=/usr/bin/$HOST-ld +export LD_BFD=/usr/bin/$HOST-ld.bfd +export NM=/usr/bin/$HOST-nm +export OBJCOPY=/usr/bin/$HOST-objcopy +export OBJDUMP=/usr/bin/$HOST-objdump +export PKG_CONFIG=/usr/bin/$HOST-pkg-config +export RANLIB=/usr/bin/$HOST-ranlib +export READELF=/usr/bin/$HOST-readelf +export SIZE=/usr/bin/$HOST-size +export STRINGS=/usr/bin/$HOST-strings +export STRIP=/usr/bin/$HOST-strip +export WINDMC=/usr/bin/$HOST-windmc +export RC=/usr/bin/$HOST-windres +export WINDRES=/usr/bin/$HOST-windres + +export LDFLAGS=" -L/usr/$HOST/sys-root/mingw/lib $LDFLAGS" +export CFLAGS=" $EXTRA_CPP_OPTIONS $CFLAGS" +export CPPFLAGS=" $EXTRA_CPP_OPTIONS $CPPFLAGS" +export CXXFLAGS=" $EXTRA_CPP_OPTIONS $CXXFLAGS" +export PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/$HOST/sys-root/mingw/lib/pkgconfig" +export PKG_CONFIG_LIBDIR="/usr/$HOST/sys-root/mingw/lib" +export XDG_DATA_DIRS="$XDG_DATA_DIRS" +export CMAKE_INCLUDE_PATH="$CMAKE_INCLUDE_PATH" +export CMAKE_LIBRARY_PATH="/usr/$HOST/sys-root/mingw/lib:$CMAKE_LIBRARY_PATH" + +unset EXTRA_CPP_OPTIONS + + +export PATH="$PREFIX/bin:$PATH" +export LD_LIBRARY_PATH="$PREFIX/lib:$LD_LIBRARY_PATH" +export LDFLAGS="-L$PREFIX/lib $LDFLAGS" +export CFLAGS="-I$PREFIX/include $CFLAGS" +export CPPFLAGS="-I$PREFIX/include $CPPFLAGS" +export CXXFLAGS="-I$PREFIX/include $CXXFLAGS" +export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PREFIX/share/pkgconfig:$PKG_CONFIG_PATH" +export PKG_CONFIG_LIBDIR="$PREFIX/lib:$PKG_CONFIG_LIBDIR" +export PKG_CONFIG_SYSROOT_DIR="/" +export XDG_DATA_DIRS="$PREFIX/share:$XDG_DATA_DIRS" +#export ACLOCAL_PATH="$PREFIX/share/aclocal:$ACLOCAL_PATH" +export CMAKE_INCLUDE_PATH="$PREFIX/include:$CMAKE_INCLUDE_PATH" +export CMAKE_LIBRARY_PATH="$PREFIX/lib:$CMAKE_LIBRARY_PATH" diff --git a/thirdparty/libmypaint/script-gettext.sh b/thirdparty/libmypaint/script-gettext.sh new file mode 100755 index 0000000..d758112 --- /dev/null +++ b/thirdparty/libmypaint/script-gettext.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +set -e +[ ! -z "$SRC_DIR" ] || (echo "env was not set" && false) + +NAME="gettext-0.19.7" +cp --remove-destination -rup "$SRC_DIR/$NAME" "$BUILD_DIR/" +cd "$BUILD_DIR/$NAME" + +export CFLAGS="-O2 $CFLAGS" +export CXXFLAGS="-O2 $CXXFLAGS" + +./configure \ + --host="$HOST" \ + --prefix="$PREFIX" \ + --with-libiconv-prefix="$PREFIX" \ + --disable-java \ + --disable-native-java \ + --disable-csharp \ + --enable-static \ + --enable-threads=win32 \ + --without-emacs \ + --disable-openmp \ + --enable-shared \ + --disable-static +make -j8 +make install + +echo "" +echo "success" +echo "" diff --git a/thirdparty/libmypaint/script-iconv.sh b/thirdparty/libmypaint/script-iconv.sh new file mode 100755 index 0000000..b83fc79 --- /dev/null +++ b/thirdparty/libmypaint/script-iconv.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -e +[ ! -z "$SRC_DIR" ] || (echo "env was not set" && false) + +NAME="libiconv-1.15" +cp --remove-destination -rup "$SRC_DIR/$NAME" "$BUILD_DIR/" +cd "$BUILD_DIR/$NAME" + +./configure --host="$HOST" --prefix="$PREFIX" --enable-shared --disable-static +make -j8 +make install + +echo "" +echo "success" +echo "" diff --git a/thirdparty/libmypaint/script-json-c.sh b/thirdparty/libmypaint/script-json-c.sh new file mode 100755 index 0000000..581833e --- /dev/null +++ b/thirdparty/libmypaint/script-json-c.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -e +[ ! -z "$SRC_DIR" ] || (echo "env was not set" && false) + +NAME="json-c-0.12.1" +cp --remove-destination -rup "$SRC_DIR/$NAME" "$BUILD_DIR/" +cd "$BUILD_DIR/$NAME" +set -e + +export CFLAGS="-Wno-error=unknown-pragmas $CFLAGS" +export LIBS="-ladvapi32 -lintl" + +./configure --host="$HOST" --prefix="$PREFIX" --enable-shared --disable-static +make || true +echo "#undef malloc" >> config.h +echo "#undef realloc" >> config.h +make -j8 +make install + +echo "" +echo "success" +echo "" diff --git a/thirdparty/libmypaint/script-libmypaint.sh b/thirdparty/libmypaint/script-libmypaint.sh new file mode 100755 index 0000000..2fa7df4 --- /dev/null +++ b/thirdparty/libmypaint/script-libmypaint.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +set -e +[ ! -z "$SRC_DIR" ] || (echo "env was not set" && false) + +NAME="libmypaint" +cp --remove-destination -rup "$SRC_DIR/$NAME" "$BUILD_DIR/" +cd "$BUILD_DIR/$NAME" + +./autogen.sh +./configure --host="$HOST" --prefix="$PREFIX" --enable-shared --enable-static +make clean +make -j8 +make install + +cp "$INST_DIR/bin/"libiconv*.dll "$DIST_DIR/" +cp "$INST_DIR/bin/"libintl*.dll "$DIST_DIR/" +cp "$INST_DIR/bin/"libjson-c*.dll "$DIST_DIR/" + +cp "$INST_DIR/bin/"libmypaint*.dll "$DIST_DIR/" +cp "$INST_DIR/lib/"libmypaint*.dll.a "$DIST_DIR/libmypaint.lib" +mkdir -p "$DIST_DIR/include" +cp -r "$INST_DIR/include/libmypaint" "$DIST_DIR/include/" + +echo "" +echo "success" +echo "" diff --git a/thirdparty/libmypaint/script-shell.sh b/thirdparty/libmypaint/script-shell.sh new file mode 100755 index 0000000..2df709a --- /dev/null +++ b/thirdparty/libmypaint/script-shell.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +set -e +[ ! -z "$SRC_DIR" ] || (echo "env was not set" && false) + +/bin/bash \ No newline at end of file diff --git a/toonz/sources/CMakeLists.txt b/toonz/sources/CMakeLists.txt index 71679b5..82fe6c0 100644 --- a/toonz/sources/CMakeLists.txt +++ b/toonz/sources/CMakeLists.txt @@ -245,6 +245,7 @@ find_package(Qt5 REQUIRED PrintSupport LinguistTools Multimedia + MultimediaWidgets ) set(QT_MINIMUM_VERSION 5.5.0) @@ -329,6 +330,8 @@ if(BUILD_ENV_MSVC) if(PLATFORM EQUAL 32) set(QT_LIB ${SDKROOT}/quicktime/QT73SDK/Libraries/QTMLClient.lib) endif() + set(MYPAINT_LIB_INCLUDE_DIRS ${SDKROOT}/libmypaint/dist/${PLATFORM}/include/libmypaint) + set(MYPAINT_LIB_LDFLAGS ${SDKROOT}/libmypaint/dist/${PLATFORM}/libmypaint.lib) elseif(BUILD_ENV_APPLE) find_library(GLUT_LIB GLUT) find_library(GL_LIB OpenGL) @@ -376,6 +379,7 @@ elseif(BUILD_ENV_APPLE) find_package(LZO REQUIRED) message("LZO:" ${LZO_INCLUDE_DIR}) + pkg_check_modules(MYPAINT_LIB REQUIRED libmypaint) elseif(BUILD_ENV_UNIXLIKE) if(BUILD_TARGET_WIN) if(PLATFORM EQUAL 32) @@ -438,6 +442,7 @@ elseif(BUILD_ENV_UNIXLIKE) pkg_check_modules(FREETYPE REQUIRED freetype2) pkg_check_modules(SDL_LIB REQUIRED sdl2) endif() + pkg_check_modules(MYPAINT_LIB REQUIRED libmypaint) endif() @@ -501,6 +506,7 @@ include_directories( ${USB_LIB_INCLUDE_DIRS} ${SUPERLU_INCLUDE_DIR} ${JPEG_INCLUDE_DIR} + ${MYPAINT_LIB_INCLUDE_DIRS} ) if(BUILD_TARGET_WIN AND PLATFORM EQUAL 64) @@ -534,7 +540,7 @@ if(BUILD_ENV_MSVC AND MSVC_VERSION EQUAL 1800) endif() # generate Qt translations and messages -set(LANGUAGES japanese italian french spanish chinese german) +set(LANGUAGES japanese italian french spanish chinese german russian) function(add_translation module) set(translation) diff --git a/toonz/sources/common/tvectorimage/tcomputeregions.cpp b/toonz/sources/common/tvectorimage/tcomputeregions.cpp index 8235ce5..f9ed60a 100644 --- a/toonz/sources/common/tvectorimage/tcomputeregions.cpp +++ b/toonz/sources/common/tvectorimage/tcomputeregions.cpp @@ -970,8 +970,10 @@ void markDeadIntersections(VIList &intList, Intersection *p) { if (!p1) return; if (p->m_numInter == 1) { - while (p1 && !!p1->m_nextIntersection) p1 = p1->next(); - assert(p1); + while (p1 && !!p1->m_nextIntersection) { + p1 = p1->next(); + } + // assert(p1); if (!p1) return; Intersection *nextInt = p1->m_nextIntersection; diff --git a/toonz/sources/image/tif/tiio_tif.cpp b/toonz/sources/image/tif/tiio_tif.cpp index 2f7086b..ba999ec 100644 --- a/toonz/sources/image/tif/tiio_tif.cpp +++ b/toonz/sources/image/tif/tiio_tif.cpp @@ -102,6 +102,8 @@ void TifReader::open(FILE *file) { int fd = fileno(file); #if 0 m_tiff = TIFFFdOpenNoCloseProc(fd, "", "rb"); +#elif defined(_WIN32) && defined(__GNUC__) + m_tiff = TIFFFdOpen((int)_get_osfhandle(dup(fd)), "", "rb"); #else m_tiff = TIFFFdOpen(dup(fd), "", "rb"); #endif @@ -792,6 +794,8 @@ void TifWriter::open(FILE *file, const TImageInfo &info) { int fd = fileno(file); #if 0 m_tiff = TIFFFdOpenNoCloseProc(fd, "", mode.c_str()); +#elif defined(_WIN32) && defined(__GNUC__) + m_tiff = TIFFFdOpen((int)_get_osfhandle(dup(fd)), "", mode.c_str()); #else m_tiff = TIFFFdOpen(dup(fd), "", mode.c_str()); #endif diff --git a/toonz/sources/include/tcolorstyles.h b/toonz/sources/include/tcolorstyles.h index 2aecdad..1b9bb6c 100644 --- a/toonz/sources/include/tcolorstyles.h +++ b/toonz/sources/include/tcolorstyles.h @@ -273,6 +273,18 @@ Returns the main color by default. return DOUBLE; } //!< Returns the type of the specified parameter. + virtual bool hasParamDefault(int index) const { + return false; + } //!< Value of parameter can be reset to default. + + virtual void setParamDefault(int index) { + assert(false); + } //!< Reset value of parameter to default. + + virtual bool isParamDefault(int index) const { + return false; + } //!< Check if current value of parameter equals to default + virtual void setParamValue(int index, bool value) { assert(false); } //!< Assigns a value to the specified \p bool parameter. diff --git a/toonz/sources/include/tools/tool.h b/toonz/sources/include/tools/tool.h index 4ee09ea..a2f66ef 100644 --- a/toonz/sources/include/tools/tool.h +++ b/toonz/sources/include/tools/tool.h @@ -16,6 +16,7 @@ // Qt includes #include +#include #undef DVAPI #undef DVVAR @@ -91,16 +92,29 @@ public: ModifierMask m_modifiersMask; //!< Bitmask specifying key modifiers applying //! on the event. - bool m_leftButtonPressed; + Qt::MouseButtons m_buttons; + Qt::MouseButton m_button; + QPoint m_mousePos; // mouse position obtained with QMouseEvent::pos() or + // QTabletEvent::pos() + bool m_isTablet; public: TMouseEvent() - : m_pressure(255), m_modifiersMask(NO_KEY), m_leftButtonPressed(false) {} + : m_pressure(255) + , m_modifiersMask(NO_KEY) + , m_buttons(Qt::NoButton) + , m_button(Qt::NoButton) + , m_isTablet(false) {} bool isShiftPressed() const { return (m_modifiersMask & SHIFT_KEY); } bool isAltPressed() const { return (m_modifiersMask & ALT_KEY); } bool isCtrlPressed() const { return (m_modifiersMask & CTRL_KEY); } - bool isLeftButtonPressed() const { return m_leftButtonPressed; } + + bool isLeftButtonPressed() const { return (m_buttons & Qt::LeftButton) != 0; } + Qt::MouseButtons buttons() const { return m_buttons; } + Qt::MouseButton button() const { return m_button; } + QPoint mousePos() const { return m_mousePos; } + bool isTablet() const { return m_isTablet; } void setModifiers(bool shiftPressed, bool altPressed, bool ctrlPressed) { m_modifiersMask = ModifierMask((shiftPressed << SHIFT_BITSHIFT) | @@ -624,6 +638,10 @@ public: virtual double projectToZ(const TPoint &delta) = 0; virtual TPointD getDpiScale() const = 0; + virtual int getVGuideCount() = 0; + virtual int getHGuideCount() = 0; + virtual double getHGuide(int index) = 0; + virtual double getVGuide(int index) = 0; virtual void resetInputMethod() = 0; // Intended to call QWidget->resetInputContext() diff --git a/toonz/sources/include/tools/tooloptions.h b/toonz/sources/include/tools/tooloptions.h index abded96..c14981c 100644 --- a/toonz/sources/include/tools/tooloptions.h +++ b/toonz/sources/include/tools/tooloptions.h @@ -475,12 +475,15 @@ class BrushToolOptionsBox final : public ToolOptionsBox { ToolOptionPopupButton *m_joinStyleCombo; ToolOptionIntSlider *m_miterField; ToolOptionCombo *m_presetCombo; + ToolOptionCheckbox *m_snapCheckbox; + ToolOptionCombo *m_snapSensitivityCombo; QPushButton *m_addPresetButton; QPushButton *m_removePresetButton; private: class PresetNamePopup; PresetNamePopup *m_presetNamePopup; + void filterControls(); public: BrushToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle, diff --git a/toonz/sources/include/toonz/mypaint.h b/toonz/sources/include/toonz/mypaint.h new file mode 100644 index 0000000..9bbeeb9 --- /dev/null +++ b/toonz/sources/include/toonz/mypaint.h @@ -0,0 +1,352 @@ +#pragma once + +#ifndef MYPAINT_HPP +#define MYPAINT_HPP + +#include +#include +#include + +extern "C" { + #include + #include + #include +} + +namespace mypaint { + class Brush; + + //======================================================= + // + // Dab + // + //======================================================= + + class Dab { + public: + float x; + float y; + float radius; + float colorR; + float colorG; + float colorB; + float opaque; + float hardness; + float alphaEraser; + float aspectRatio; + float angle; + float lockAlpha; + float colorize; + + Dab(): + x(), y(), radius(), + colorR(), colorG(), colorB(), + opaque(), hardness(), alphaEraser(), + aspectRatio(), angle(), + lockAlpha(), colorize() + { } + + Dab( + float x, float y, float radius, + float colorR = 0.f, float colorG = 0.f, float colorB = 0.f, + float opaque = 1.f, float hardness = 0.5f, float alphaEraser = 1.f, + float aspectRatio = 1.f, float angle = 0.f, + float lockAlpha = 0.f, float colorize = 0.f + ): + x(x), y(y), radius(radius), + colorR(colorR), colorG(colorG), colorB(colorB), + opaque(opaque), hardness(hardness), alphaEraser(alphaEraser), + aspectRatio(aspectRatio), angle(angle), + lockAlpha(lockAlpha), colorize(lockAlpha) + { } + + void clamp() { + radius = fabsf(radius); + colorR = std::min(std::max(colorR, 0.f), 1.f); + colorG = std::min(std::max(colorG, 0.f), 1.f); + colorB = std::min(std::max(colorB, 0.f), 1.f); + opaque = std::min(std::max(opaque, 0.f), 1.f); + hardness = std::min(std::max(hardness, 0.f), 1.f); + alphaEraser = std::min(std::max(alphaEraser, 0.f), 1.f); + aspectRatio = std::max(aspectRatio, 1.f); + lockAlpha = std::min(std::max(lockAlpha, 0.f), 1.f); + colorize = std::min(std::max(colorize, 0.f), 1.f); + } + + Dab getClamped() const + { Dab dab(*this); dab.clamp(); return dab; } + }; + + + //======================================================= + // + // Surface + // + //======================================================= + + class Surface { + friend class Brush; + + struct InternalSurface: public MyPaintSurface { + Surface *m_owner; + }; + + InternalSurface m_surface; + + static int internalDrawDab( + MyPaintSurface *self, + float x, float y, float radius, + float colorR, float colorG, float colorB, + float opaque, float hardness, float alphaEraser, + float aspectRatio, float angle, + float lockAlpha, float colorize ) + { + return static_cast(self)->m_owner->drawDab( Dab( + x, y, radius, + colorR, colorG, colorB, + opaque, hardness, alphaEraser, + aspectRatio, angle, + lockAlpha, colorize )); + } + + static void internalGetColor( + MyPaintSurface *self, + float x, float y, float radius, + float *colorR, float *colorG, float *colorB, float *colorA ) + { + static_cast(self)->m_owner->getColor( + x, y, + radius, + *colorR, *colorG, *colorB, *colorA); + } + + public: + Surface(): + m_surface() + { + m_surface.m_owner = this; + m_surface.draw_dab = internalDrawDab; + m_surface.get_color = internalGetColor; + } + + virtual ~Surface() { } + + virtual bool getColor( + float x, float y, float radius, + float &colorR, float &colorG, float &colorB, float &colorA ) = 0; + + virtual bool drawDab(const Dab &dab) = 0; + }; + + //======================================================= + // + // Brush + // + //======================================================= + + class Brush { + MyPaintBrush *m_brush; + + public: + Brush(): + m_brush(mypaint_brush_new()) + { fromDefaults(); } + + Brush(const Brush &other): + m_brush(mypaint_brush_new()) + { fromBrush(other); } + + ~Brush() + { mypaint_brush_unref(m_brush); } + + Brush& operator= (const Brush &other) { + fromBrush(other); + return *this; + } + + void reset() + { mypaint_brush_reset(m_brush); } + + void newStroke() + { mypaint_brush_new_stroke(m_brush); } + + int strokeTo(Surface &surface, float x, float y, + float pressure, float xtilt, float ytilt, double dtime) + { + return mypaint_brush_stroke_to(m_brush, &surface.m_surface, + x, y, pressure, xtilt, ytilt, dtime); + } + + void setBaseValue(MyPaintBrushSetting id, float value) + { mypaint_brush_set_base_value(m_brush, id, value); } + + float getBaseValue(MyPaintBrushSetting id) const + { return mypaint_brush_get_base_value(m_brush, id); } + + bool isConstant(MyPaintBrushSetting id) const + { return mypaint_brush_is_constant(m_brush, id); } + + int getInputsUsedN(MyPaintBrushSetting id) const + { return mypaint_brush_get_inputs_used_n(m_brush, id); } + + void setMappingN(MyPaintBrushSetting id, MyPaintBrushInput input, int n) + { mypaint_brush_set_mapping_n(m_brush, id, input, n); } + + int getMappingN(MyPaintBrushSetting id, MyPaintBrushInput input) const + { return mypaint_brush_get_mapping_n(m_brush, id, input); } + + void setMappingPoint(MyPaintBrushSetting id, MyPaintBrushInput input, int index, float x, float y) + { mypaint_brush_set_mapping_point(m_brush, id, input, index, x, y); } + + void getMappingPoint(MyPaintBrushSetting id, MyPaintBrushInput input, int index, float &x, float &y) const + { mypaint_brush_get_mapping_point(m_brush, id, input, index, &x, &y); } + + float getState(MyPaintBrushState i) const + { return mypaint_brush_get_state(m_brush, i); } + + void setState(MyPaintBrushState i, float value) + { return mypaint_brush_set_state(m_brush, i, value); } + + double getTotalStrokePaintingTime() const + { return mypaint_brush_get_total_stroke_painting_time(m_brush); } + + void setPrintInputs(bool enabled) + { mypaint_brush_set_print_inputs(m_brush, enabled); } + + void fromDefaults() { + mypaint_brush_from_defaults(m_brush); + } + + void fromBrush(const Brush &other) { + for(int i = 0; i < MYPAINT_BRUSH_SETTINGS_COUNT; ++i) { + MyPaintBrushSetting id = (MyPaintBrushSetting)i; + setBaseValue(id, other.getBaseValue(id)); + for(int j = 0; j < MYPAINT_BRUSH_INPUTS_COUNT; ++j) { + MyPaintBrushInput input = (MyPaintBrushInput)j; + int n = other.getMappingN(id, input); + setMappingN(id, input, n); + for(int index = 0; index < n; ++index) { + float x = 0.f, y = 0.f; + other.getMappingPoint(id, input, index, x, y); + setMappingPoint(id, input, index, x, y); + } + } + } + } + + bool fromString(const std::string &s) { + return mypaint_brush_from_string(m_brush, s.c_str()); + } + }; + + //======================================================= + // + // Setting + // + //======================================================= + + class Setting final { + public: + MyPaintBrushSetting id; + std::string key; + std::string name; + std::string tooltip; + bool constant; + float min; + float def; + float max; + + private: + Setting(): id(), constant(), min(), def(), max() { } + Setting(const Setting&): id(), constant(), min(), def(), max() { } + + public: + static const Setting* all() { + static bool initialized = false; + static Setting settings[MYPAINT_BRUSH_SETTINGS_COUNT]; + if (!initialized) { + for(int i = 0; i < MYPAINT_BRUSH_SETTINGS_COUNT; ++i) { + const MyPaintBrushSettingInfo *info = mypaint_brush_setting_info((MyPaintBrushSetting)i); + settings[i].id = (MyPaintBrushSetting)i; + settings[i].key = info->cname; + settings[i].name = mypaint_brush_setting_info_get_name(info); + settings[i].tooltip = mypaint_brush_setting_info_get_tooltip(info); + settings[i].constant = info->constant; + settings[i].min = info->min; + settings[i].def = info->def; + settings[i].max = info->max; + } + } + return settings; + } + + static const Setting& byId(MyPaintBrushSetting id) + { return all()[id]; } + + static const Setting* findByKey(const std::string &key) { + const Setting* settings = all(); + for(int i = 0; i < MYPAINT_BRUSH_SETTINGS_COUNT; ++i) + if (settings[i].key == key) + return &settings[i]; + return 0; + } + }; + + //======================================================= + // + // Input + // + //======================================================= + + class Input final { + public: + MyPaintBrushInput id; + std::string key; + std::string name; + std::string tooltip; + float hardMin; + float softMin; + float normal; + float softMax; + float hardMax; + + private: + Input(): id(), hardMin(), softMin(), normal(), softMax(), hardMax() { } + Input(const Input&): id(), hardMin(), softMin(), normal(), softMax(), hardMax() { } + + public: + static const Input* all() { + static bool initialized = false; + static Input inputs[MYPAINT_BRUSH_INPUTS_COUNT]; + if (!initialized) { + for(int i = 0; i < MYPAINT_BRUSH_INPUTS_COUNT; ++i) { + const MyPaintBrushInputInfo *info = mypaint_brush_input_info((MyPaintBrushInput)i); + inputs[i].id = (MyPaintBrushInput)i; + inputs[i].key = info->cname; + inputs[i].name = mypaint_brush_input_info_get_name(info); + inputs[i].tooltip = mypaint_brush_input_info_get_tooltip(info); + inputs[i].hardMin = info->hard_min; + inputs[i].softMin = info->soft_min; + inputs[i].normal = info->normal; + inputs[i].softMax = info->soft_max; + inputs[i].hardMax = info->hard_max; + } + } + return inputs; + } + + static const Input& byId(MyPaintBrushInput id) { + return all()[id]; + } + + static const Input* findByKey(const std::string &key) { + const Input* inputs = all(); + for(int i = 0; i < MYPAINT_BRUSH_INPUTS_COUNT; ++i) + if (inputs[i].key == key) + return &inputs[i]; + return 0; + } + }; +} + +#endif // MYPAINT_HPP diff --git a/toonz/sources/include/toonz/mypaintbrushstyle.h b/toonz/sources/include/toonz/mypaintbrushstyle.h new file mode 100644 index 0000000..d4895fb --- /dev/null +++ b/toonz/sources/include/toonz/mypaintbrushstyle.h @@ -0,0 +1,122 @@ +#pragma once + +#ifndef MYPAINTBRUSHSTYLE_H +#define MYPAINTBRUSHSTYLE_H + +#include "mypaint.h" + +// TnzCore includes +#include "imagestyles.h" + +#undef DVAPI +#undef DVVAR + +#ifdef TOONZLIB_EXPORTS +#define DVAPI DV_EXPORT_API +#define DVVAR DV_EXPORT_VAR +#else +#define DVAPI DV_IMPORT_API +#define DVVAR DV_IMPORT_VAR +#endif + +//********************************************************************************** +// TMyPaintBrushStyle declaration +//********************************************************************************** + +class DVAPI TMyPaintBrushStyle final : public TColorStyle, TImageStyle { +private: + TFilePath m_path; + TFilePath m_fullpath; + mypaint::Brush m_brushOriginal; + mypaint::Brush m_brushModified; + TRasterP m_preview; + TPixel32 m_color; + + std::map m_baseValues; + + TFilePath decodePath(const TFilePath &path) const; + void loadBrush(const TFilePath &path); + +public: + TMyPaintBrushStyle(); + TMyPaintBrushStyle(const TFilePath &path); + TMyPaintBrushStyle(const TMyPaintBrushStyle &other); + ~TMyPaintBrushStyle(); + + TColorStyle *clone() const override + { return new TMyPaintBrushStyle(*this); } + + TColorStyle ©(const TColorStyle &other) override; + + static std::string getBrushType(); + static TFilePathSet getBrushesDirs(); + + const TFilePath& getPath() const + { return m_path; } + const mypaint::Brush& getBrush() const + { return m_brushModified; } + const TRasterP& getPreview() const + { return m_preview; } + + TStrokeProp* makeStrokeProp(const TStroke * /* stroke */) override + { return 0; } + TRegionProp* makeRegionProp(const TRegion * /* region */) override + { return 0; } + bool isRegionStyle() const override + { return false; } + bool isStrokeStyle() const override + { return false; } + + bool hasMainColor() const override + { return true; } + TPixel32 getMainColor() const override + { return m_color; } + void setMainColor(const TPixel32 &color) override + { m_color = color; } + + int getTagId() const override + { return 4001; } + + QString getDescription() const override; + + void setBaseValue(MyPaintBrushSetting id, bool enable, float value); + void resetBaseValues(); + + void setBaseValue(MyPaintBrushSetting id, float value) + { setBaseValue(id, true, value); } + + void setBaseValueEnabled(MyPaintBrushSetting id, bool enable) + { setBaseValue(id, enable, getBaseValue(id)); } + + const std::map getBaseValues() const + { return m_baseValues; } + + float getBaseValue(MyPaintBrushSetting id) const { + std::map::const_iterator i = m_baseValues.find(id); + return i == m_baseValues.end() + ? m_brushOriginal.getBaseValue(id) + : i->second; + } + + bool getBaseValueEnabled(MyPaintBrushSetting id) const { + std::map::const_iterator i = m_baseValues.find(id); + return i != m_baseValues.end(); + } + + int getParamCount() const override; + QString getParamNames(int index) const override; + ParamType getParamType(int index) const override; + bool hasParamDefault(int index) const override; + void setParamDefault(int index) override; + bool isParamDefault(int index) const override; + void getParamRange(int index, double &min, double &max) const override; + void setParamValue(int index, double value) override; + double getParamValue(double_tag, int index) const override; + +protected: + void makeIcon(const TDimension &d) override; + void loadData(TInputStreamInterface &) override; + void saveData(TOutputStreamInterface &) const override; +}; + +#endif diff --git a/toonz/sources/include/toonz/mypainthelpers.hpp b/toonz/sources/include/toonz/mypainthelpers.hpp new file mode 100644 index 0000000..929a29f --- /dev/null +++ b/toonz/sources/include/toonz/mypainthelpers.hpp @@ -0,0 +1,601 @@ +#pragma once + +#ifndef MYPAINTHELPERS_H +#define MYPAINTHELPERS_H + +#include +#include + +#include "mypaint.h" + +namespace mypaint { + namespace helpers { + const float precision = 1e-4f; + + typedef void ReadPixelFunc( + const void *pixel, + float &colorR, + float &colorG, + float &colorB, + float &colorA ); + typedef void WritePixelFunc( + void *pixel, + float colorR, + float colorG, + float colorB, + float colorA ); + typedef bool AskAccessFunc( + void *surfaceController, + const void *surfacePointer, + int x0, + int y0, + int x1, + int y1 ); + + inline void dummyReadPixel(const void*, float&, float&, float&, float&) { } + inline void dummyWritePixel(void*, float, float, float, float) { } + inline bool dummyAskAccess(void*, const void*, int, int, int, int) { return true; } + + template< ReadPixelFunc read = dummyReadPixel, + WritePixelFunc write = dummyWritePixel, + AskAccessFunc askRead = dummyAskAccess, + AskAccessFunc askWrite = dummyAskAccess > + class SurfaceCustom: public Surface { + public: + void *pointer; + int width; + int height; + int pixelSize; + int rowSize; + void *controller; + bool antialiasing; + + SurfaceCustom(): + pointer(), width(), height(), pixelSize(), rowSize(), controller(), antialiasing(true) + { } + + SurfaceCustom(void *pointer, int width, int height, int pixelSize, int rowSize = 0, void *controller = 0, bool antialiasing = true): + pointer(pointer), + width(width), + height(height), + pixelSize(pixelSize), + rowSize(rowSize ? rowSize : width*pixelSize), + controller(controller), + antialiasing(antialiasing) + { } + + private: + template< bool enableAspect, // 2 variants + bool enableAntialiasing, // 1 variants (true) + bool enableHardnessOne, // 3 variants + bool enableHardnessHalf, // -- + bool enablePremult, // 1 variant (true) + bool enableBlendNormal, // 2 variants + bool enableBlendLockAlpha, // 2 variants + bool enableBlendColorize, // 2 variants + bool enableSummary > // 1 variants (false) Total: 48 copies of function + bool drawDabCustom(const Dab &dab, float *colorSummary) { + const float antialiasing = 0.66f; // equals to drawDab::minRadiusX + const float lr = 0.30f; + const float lg = 0.59f; + const float lb = 0.11f; + + if (!enableBlendNormal && !enableBlendLockAlpha && !enableBlendColorize && !enableSummary) + return false; + + // prepare summary + double colorSumR, colorSumG, colorSumB, colorSumA, colorSumW; + if (enableSummary) { + colorSummary[0] = 0.f; + colorSummary[1] = 0.f; + colorSummary[2] = 0.f; + colorSummary[3] = 0.f; + colorSumR = 0.0; + colorSumG = 0.0; + colorSumB = 0.0; + colorSumA = 0.0; + colorSumW = 0.0; + } + + // bounding rect + int x0 = std::max(0, (int)floor(dab.x - dab.radius - 1.f + precision)); + int x1 = std::min(width-1, (int)ceil(dab.x + dab.radius + 1.f - precision)); + int y0 = std::max(0, (int)floor(dab.y - dab.radius - 1.f + precision)); + int y1 = std::min(height-1, (int)ceil(dab.y + dab.radius + 1.f - precision)); + if (x0 > x1 || y0 > y1) + return false; + + if (controller && !askRead(controller, pointer, x0, y0, x1, y1)) + return false; + if (enableBlendNormal || enableBlendLockAlpha || enableBlendColorize) + if (controller && !askWrite(controller, pointer, x0, y0, x1, y1)) + return false; + + assert(pointer); + + // prepare pixel iterator + int w = x1 - x0 + 1; + int h = y1 - y0 + 1; + char *pixel = (char*)pointer + rowSize*y0 + pixelSize*x0; + int pixelNextCol = pixelSize; + int pixelNextRow = rowSize - w*pixelSize; + + // prepare geometry iterators + float radiusInv = 1.f/dab.radius; + float dx = (float)x0 - dab.x + 0.5f; + float dy = (float)y0 - dab.y + 0.5f; + float ddx, ddxNextCol, ddxNextRow; + float ddy, ddyNextCol, ddyNextRow; + if (enableAspect) { + float angle = dab.angle*((float)M_PI/180.f); + float s = sinf(angle); + float c = cosf(angle); + + float radiusYInv = radiusInv*dab.aspectRatio; + + ddx = (dx*c + dy*s)*radiusInv; + ddxNextCol = c*radiusInv; + ddxNextRow = (s - c*(float)w)*radiusInv; + + ddy = (dy*c - dx*s)*radiusYInv; + ddyNextCol = -s*radiusYInv; + ddyNextRow = (c + s*(float)w)*radiusYInv; + } else { + ddx = dx*radiusInv; + ddxNextCol = radiusInv; + ddxNextRow = -radiusInv*(float)w; + + ddy = dy*radiusInv; + ddyNextCol = 0.f; + ddyNextRow = radiusInv; + } + + // prepare antialiasing + float hardness, ka0, ka1, kb1, kc1, kc2; + float aa, aa2, aaSqr, ddySqrMin, aspectRatioSqr; + if (enableAntialiasing) { + if (enableHardnessOne) { + } else + if (enableHardnessHalf) { + ka0 = 0.25f; + kc2 = 0.75f; + } else { + hardness = std::min(dab.hardness, 1.f - precision); + float hk = hardness/(hardness - 1.f); + ka0 = 0.25f/hk; + ka1 = 0.25f*hk; + kb1 = -0.5f*hk; + kc1 = ((ka0 - ka1)*hardness + 0.5f - kb1)*hardness; + kc2 = ka1 + kb1 + kc1; + } + + aa = antialiasing*radiusInv; + if (enableAspect) { + ddySqrMin = 0.5f*aa*dab.aspectRatio; + ddySqrMin *= ddySqrMin; + aspectRatioSqr = dab.aspectRatio*dab.aspectRatio; + } else { + aa2 = aa + aa; + aaSqr = aa*aa; + } + } else { + if (enableHardnessOne) { + } else + if (enableHardnessHalf) { + } else { + hardness = std::min(dab.hardness, 1.f - precision); + float hk = hardness/(hardness - 1.f); + ka0 = 1.f/hk; + ka1 = hk; + kb1 = -hk; + } + } + + // prepare blend + float opaque = dab.opaque; + float colorR, colorG, colorB; + if (enableBlendNormal || enableBlendLockAlpha || enableBlendColorize) { + colorR = dab.colorR; + colorG = dab.colorG; + colorB = dab.colorB; + } + float blendNormal, blendAlphaEraser; + if (enableBlendNormal) { + blendNormal = (1.f - dab.lockAlpha)*(1.f - dab.colorize); + blendAlphaEraser = dab.alphaEraser; + } + float blendLockAlpha; + if (enableBlendLockAlpha) { + blendLockAlpha = dab.lockAlpha; + } + float blendColorize, blendColorizeSrcLum; + if (enableBlendColorize) { + blendColorize = dab.colorize; + blendColorizeSrcLum = dab.colorR*lr + dab.colorG*lg + dab.colorB*lb; + } + + // process + for(int iy = h; iy; --iy, ddx += ddxNextRow, ddy += ddyNextRow, pixel += pixelNextRow) + for(int ix = w; ix; --ix, ddx += ddxNextCol, ddy += ddyNextCol, pixel += pixelNextCol) { + float o; + if (enableAntialiasing) { + float dd, dr; + if (enableAspect) { + float ddxSqr = ddx*ddx; + float ddySqr = std::max(ddySqrMin, ddy*ddy); + dd = ddxSqr + ddySqr; + float k = aa*sqrtf(ddxSqr + ddySqr*aspectRatioSqr); + dr = k*(2.f + k/dd); + } else { + dd = ddx*ddx + ddy*ddy; + dr = aa2*sqrtf(dd) + aaSqr; + } + + float dd0 = dd - dr; + if (dd0 > 1.f) + continue; + float dd1 = dd + dr; + + float o0, o1; + if (enableHardnessOne) { + o0 = dd0 < -1.f ? -0.5f + : 0.5f*dd0; + o1 = dd1 < 1.f ? 0.5f*dd1 + : 0.5f; + } else + if (enableHardnessHalf) { + o0 = dd0 < -1.f ? -0.25f + : dd0 < 0.f ? ( 0.25f*dd0 + 0.5f )*dd0 + : (-0.25f*dd0 + 0.5f )*dd0; + o1 = dd1 < 1.f ? (-0.25f*dd1 + 0.5f )*dd1 + : 0.25f; + } else { + o0 = dd0 < -1.f ? -kc2 + : dd0 < -hardness ? (-ka1*dd0 + kb1 )*dd0 - kc1 + : dd0 < 0.f ? (-ka0*dd0 + 0.5f )*dd0 + : dd0 < hardness ? ( ka0*dd0 + 0.5f )*dd0 + : ( ka1*dd0 + kb1 )*dd0 + kc1; + o1 = dd1 < hardness ? ( ka0*dd1 + 0.5f )*dd1 + : dd1 < 1.f ? ( ka1*dd1 + kb1 )*dd1 + kc1 + : kc2; + } + o = opaque*(o1 - o0)/dr; + } else { + float dd = ddx*ddx + ddy*ddy; + if (dd > 1.f) + continue; + if (enableHardnessOne) { + o = opaque; + } else + if (enableHardnessHalf) { + o = opaque*(1.f - dd); + } else { + o = opaque*(dd < hardness ? ka0*dd + 1.f : ka1*dd + kb1); + } + } + + if (o <= precision) + continue; + + // read pixel + float destR, destG, destB, destA; + read(pixel, destR, destG, destB, destA); + + if (enablePremult) { + destR *= destA; + destG *= destA; + destB *= destA; + } + + if (enableSummary) { + colorSumR += (double)(o*destR); + colorSumG += (double)(o*destG); + colorSumB += (double)(o*destB); + colorSumA += (double)(o*destA); + colorSumW += (double)o; + } + + if (!enableBlendNormal && !enableBlendLockAlpha && !enableBlendColorize) + continue; + + if (enableBlendNormal) { + float oa = blendNormal*o; + float ob = 1.f - oa; + oa *= blendAlphaEraser; + destR = oa*dab.colorR + ob*destR; + destG = oa*dab.colorG + ob*destG; + destB = oa*dab.colorB + ob*destB; + destA = oa + ob*destA; + } + + if (enableBlendLockAlpha) { + float oa = blendLockAlpha*o; + float ob = 1.f - oa; + oa *= destA; + destR = oa*colorR + ob*destR; + destG = oa*colorG + ob*destG; + destB = oa*colorB + ob*destB; + } + + if (enableBlendColorize) { + float dLum = destR*lr + destG*lg + destB*lb - blendColorizeSrcLum; + float r = colorR + dLum; + float g = colorG + dLum; + float b = colorB + dLum; + + float lum = r*lr + g*lg + b*lb; + float cmin = std::min(std::min(r, g), b); + float cmax = std::max(std::max(r, g), b); + if (cmin < 0.f) { + float k = lum/(lum - cmin); + r = lum + k*(r - lum); + g = lum + k*(g - lum); + b = lum + k*(b - lum); + } + if (cmax > 1.f) { + float k = (1.f - lum)/(cmax - lum); + r = lum + k*(r - lum); + g = lum + k*(g - lum); + b = lum + k*(b - lum); + } + + float oa = blendColorize*o; + float ob = 1.f - oa; + destR = oa*r + ob*destR; + destG = oa*g + ob*destG; + destB = oa*b + ob*destB; + } + + if (enablePremult) { + if (destA > precision) { + float oneDivA = 1.f/destA; + destR *= oneDivA; + destG *= oneDivA; + destB *= oneDivA; + } + } + + // clamp + destR = std::min(std::max(destR, 0.f), 1.f); + destG = std::min(std::max(destG, 0.f), 1.f); + destB = std::min(std::max(destB, 0.f), 1.f); + destA = std::min(std::max(destA, 0.f), 1.f); + + write(pixel, destR, destG, destB, destA); + } + + if (enableSummary) { + double k = colorSumA > precision ? 1.0/colorSumA : 0.0; + colorSummary[0] = (float)(k*colorSumR); + colorSummary[1] = (float)(k*colorSumG); + colorSummary[2] = (float)(k*colorSumB); + colorSummary[3] = (float)(colorSumW > precision ? colorSumA/colorSumW : 0.0); + } + + return true; + } + + template< bool enableAspect, + bool enableAntialiasing, + bool enableHardnessOne, + bool enableHardnessHalf, + bool enableBlendNormal, + bool enableBlendLockAlpha > + inline bool drawDabCheckBlendColorize(const Dab &dab) { + if (dab.colorize > precision) { + return drawDabCustom< + enableAspect, + enableAntialiasing, + enableHardnessOne, + enableHardnessHalf, + false, // enablePremult + enableBlendNormal, + enableBlendLockAlpha, + true, // enableBlendColorize, + false // enableSummary + >(dab, 0); + } else { + return drawDabCustom< + enableAspect, + enableAntialiasing, + enableHardnessOne, + enableHardnessHalf, + false, // enablePremult + enableBlendNormal, + enableBlendLockAlpha, + false, // enableBlendColorize, + false // enableSummary + >(dab, 0); + } + } + + template< bool enableAspect, + bool enableAntialiasing, + bool enableHardnessOne, + bool enableHardnessHalf, + bool enableBlendNormal > + inline bool drawDabCheckBlendLockAlpha(const Dab &dab) { + if (dab.lockAlpha > precision) { + return drawDabCheckBlendColorize< + enableAspect, + enableAntialiasing, + enableHardnessOne, + enableHardnessHalf, + enableBlendNormal, + true // enableBlendLockAlpha + >(dab); + } else { + return drawDabCheckBlendColorize< + enableAspect, + enableAntialiasing, + enableHardnessOne, + enableHardnessHalf, + enableBlendNormal, + false // enableBlendLockAlpha + >(dab); + } + } + + template< bool enableAspect, + bool enableAntialiasing, + bool enableHardnessOne, + bool enableHardnessHalf > + inline bool drawDabCheckBlendNormal(const Dab &dab) { + if ((1.f - dab.lockAlpha)*(1.f - dab.colorize) > precision) { + return drawDabCheckBlendLockAlpha< + enableAspect, + enableAntialiasing, + enableHardnessOne, + enableHardnessHalf, + true // enableBlendNormal + >(dab); + } else { + return drawDabCheckBlendLockAlpha< + enableAspect, + enableAntialiasing, + enableHardnessOne, + enableHardnessHalf, + false // enableBlendNormal + >(dab); + } + } + + template< bool enableAspect, + bool enableAntialiasing > + inline bool drawDabCheckHardness(const Dab &dab) { + if (dab.hardness >= 1.f - precision) { + return drawDabCheckBlendNormal< + enableAspect, + enableAntialiasing, + true, // enableHardnessOne + false // enableHardnessHalf + >(dab); + } else + if (fabsf(dab.hardness - 0.5f) <= precision) { + return drawDabCheckBlendNormal< + enableAspect, + enableAntialiasing, + false, // enableHardnessOne + true // enableHardnessHalf + >(dab); + } else { + return drawDabCheckBlendNormal< + enableAspect, + enableAntialiasing, + false, // enableHardnessOne + false // enableHardnessHalf + >(dab); + } + } + + template< bool enableAspect > + inline bool drawDabCheckAntialiasing(const Dab &dab, bool antialiasing) { + if (antialiasing) { + return drawDabCheckHardness< + enableAspect, + true // enableAntialiasing + >(dab); + } else { + return drawDabCheckHardness< + enableAspect, + false // enableAntialiasing + >(dab); + } + } + + inline bool drawDabCheckAspect(const Dab &dab, bool antialiasing) { + if (dab.aspectRatio > 1.f + precision) { + return drawDabCheckAntialiasing< + true // enableAspect + >(dab, antialiasing); + } else { + return drawDabCheckAntialiasing< + false // enableAspect + >(dab, antialiasing); + } + } + + public: + bool getColor(float x, float y, float radius, + float &colorR, float &colorG, float &colorB, float &colorA) + { + float color[4]; + bool done = drawDabCustom< + false, // enableAspect + false, // enableAntialiasing + false, // enableHardnessOne + true, // enableHardnessHalf + false, // enablePremult + false, // enableBlendNormal + false, // enableBlendLockAlpha + false, // enableBlendColorize + true // enableSummary + >(Dab(x, y, radius), color); + colorR = color[0]; + colorG = color[1]; + colorB = color[2]; + colorA = color[3]; + return done; + } + + bool drawDab(const Dab &dab) { + const float minRadiusX = 0.66f; // equals to drawDabCustom::antialiasing + const float minRadiusY = 3.f*minRadiusX; + const float maxAspect = 10.f; + const float minOpaque = 1.f/256.f; + + // check limits + Dab d = dab.getClamped(); + if (d.radius <= precision) + return true; + if (d.hardness <= precision) + return true; + + // fix aspect + if (d.aspectRatio > maxAspect) { + d.opaque *= maxAspect/d.aspectRatio; + d.aspectRatio = maxAspect; + } + + // fix radius + float hardnessSize = 1.f; + if (d.radius < minRadiusX) { + d.opaque *= d.radius/minRadiusX; + d.radius = minRadiusX; + } + if (d.hardness < 0.5f) { + hardnessSize = sqrtf(d.hardness/(1.f - d.hardness)); + float radiusH = d.radius*hardnessSize; + if (radiusH < minRadiusX) { + d.opaque *= radiusH/minRadiusX; + hardnessSize = minRadiusX/d.radius; + float hardnessSizeSqr = hardnessSize*hardnessSize; + d.hardness = hardnessSizeSqr/(1.f + hardnessSizeSqr); + radiusH = minRadiusX; + } + if (d.hardness*d.opaque < minOpaque) { + d.radius = radiusH; + d.hardness = 0.5f; + hardnessSize = 1.f; + } + } + + float radiusYh = d.radius*hardnessSize/d.aspectRatio; + float actualMinRadiusY = std::min(d.radius, minRadiusY); + if (radiusYh < actualMinRadiusY) { + float k = radiusYh/actualMinRadiusY; + d.opaque *= k; + d.aspectRatio *= k; + } + + // check opaque + if (d.opaque < minOpaque) + return false; + + return drawDabCheckAspect(d, antialiasing); + } + }; // SurfaceCustom + } // helpers +} // mypaint + +#endif // MYPAINTHELPERS_H diff --git a/toonz/sources/include/toonz/preferences.h b/toonz/sources/include/toonz/preferences.h index fadefd0..b489cd4 100644 --- a/toonz/sources/include/toonz/preferences.h +++ b/toonz/sources/include/toonz/preferences.h @@ -76,6 +76,8 @@ public: header) */ }; + enum SnappingTarge { SnapStrokes, SnapGuides, SnapAll }; + public: static Preferences *instance(); @@ -132,13 +134,14 @@ public: // Interface tab - void setCurrentLanguage(int currentLanguage); + void setCurrentLanguage(const QString ¤tLanguage); QString getCurrentLanguage() const; QString getLanguage(int index) const; int getLanguageCount() const; - void setCurrentStyleSheet(int currentStyleSheet); - QString getCurrentStyleSheet() const; + void setCurrentStyleSheet(const QString ¤tStyleSheet); + QString getCurrentStyleSheetName() const; + QString getCurrentStyleSheetPath() const; QString getStyleSheet(int index) const; int getStyleSheetCount() const; @@ -321,6 +324,9 @@ public: return m_useNumpadForSwitchingStyles; } + void setVectorSnappingTarget(int target); + int getVectorSnappingTarget() { return m_vectorSnappingTarget; } + // Xsheet tab void setXsheetStep(int step); //!< Sets the step used for the next/prev @@ -477,7 +483,8 @@ Q_SIGNALS: private: std::unique_ptr m_settings; - QMap m_languageMaps, m_styleSheetMaps, m_roomMaps; + QStringList m_languageList, m_styleSheetList; + QMap m_roomMaps; std::vector m_levelFormats; @@ -498,10 +505,10 @@ private: m_textureSize, m_autocreationType, m_keyframeType, m_animationStep, m_ffmpegTimeout; // seconds int m_projectRoot, m_importPolicy; - int m_currentLanguage, m_currentStyleSheet, - m_undoMemorySize, // in megabytes + QString m_currentLanguage, m_currentStyleSheet; + int m_undoMemorySize, // in megabytes m_dragCellsBehaviour, m_lineTestFpsCapture, m_defLevelType, m_xsheetStep, - m_shmmax, m_shmseg, m_shmall, m_shmmni; + m_shmmax, m_shmseg, m_shmall, m_shmmni, m_vectorSnappingTarget; bool m_autoExposeEnabled, m_autoCreateEnabled, m_subsceneFolderEnabled, m_generatedMovieViewEnabled, m_xsheetAutopanEnabled, diff --git a/toonz/sources/include/toonz/strokegenerator.h b/toonz/sources/include/toonz/strokegenerator.h index 5d8c1d3..916c2ab 100644 --- a/toonz/sources/include/toonz/strokegenerator.h +++ b/toonz/sources/include/toonz/strokegenerator.h @@ -69,6 +69,8 @@ public: */ void add(const TThickPoint &point, double pixelSize2); + TPointD getFirstPoint(); // returns the first point + //! Filtra i punti di m_points /*! Verifica se i primi sei e gli ultimi sei punti successivi hanno una @@ -83,6 +85,9 @@ In caso affermativo li cancella. //! Visualizza tutti i frammenti void drawAllFragments(); + // Only keep first and last points. Used for straight lines + void removeMiddlePoints(); + //! Restituisce il rettangolo che contiene la regione modificata TRectD getModifiedRegion() const; diff --git a/toonz/sources/include/toonz/tcleanupper.h b/toonz/sources/include/toonz/tcleanupper.h index d6a1859..3a2ac95 100644 --- a/toonz/sources/include/toonz/tcleanupper.h +++ b/toonz/sources/include/toonz/tcleanupper.h @@ -57,7 +57,7 @@ public: class DVAPI TCleanupper { CleanupParameters *m_parameters; - TPointD m_customDpi; + TPointD m_sourceDpi; private: TCleanupper() @@ -101,8 +101,8 @@ time, to unlock a possibly useful memory block. TRasterImageP autocenterOnly(const TRasterImageP &image, bool isCameraTest, bool &autocentered); - TPointD getCustomDpi() const { return m_customDpi; } - void setCustomDpi(const TPointD &dpi) { m_customDpi = dpi; } + TPointD getSourceDpi() const { return m_sourceDpi; } + void setSourceDpi(const TPointD &dpi) { m_sourceDpi = dpi; } private: // process phase diff --git a/toonz/sources/include/toonzqt/filefield.h b/toonz/sources/include/toonzqt/filefield.h index 944f2d1..a0beb74 100644 --- a/toonz/sources/include/toonzqt/filefield.h +++ b/toonz/sources/include/toonzqt/filefield.h @@ -69,7 +69,8 @@ public: virtual ~BrowserPopupController() {} virtual bool isExecute() { return true; }; virtual QString getPath() { return QString(); }; - virtual void openPopup(QStringList, bool, QString){}; + virtual void openPopup(QStringList, bool, QString, + const QWidget * = NULL){}; }; static BrowserPopupController *m_browserPopupController; diff --git a/toonz/sources/include/toonzqt/styleeditor.h b/toonz/sources/include/toonzqt/styleeditor.h index 8608ac7..cb22543 100644 --- a/toonz/sources/include/toonzqt/styleeditor.h +++ b/toonz/sources/include/toonzqt/styleeditor.h @@ -548,6 +548,9 @@ class SettingsPage final : public QScrollArea { bool m_updating; //!< Whether the page is copying style content to its widget, //! to be displayed. +private: + int getParamIndex(const QWidget *widget); + public: SettingsPage(QWidget *parent); @@ -565,6 +568,7 @@ private slots: void onAutofillChanged(); void onValueChanged(bool isDragging = false); + void onValueReset(); }; //============================================================================= @@ -614,6 +618,7 @@ class DVAPI StyleEditor final : public QWidget { StyleEditorPage *m_specialStylePage; StyleChooserPage *m_customStylePage; StyleChooserPage *m_vectorBrushesStylePage; + StyleChooserPage *m_mypaintBrushesStylePage; SettingsPage *m_settingsPage; TColorStyleP diff --git a/toonz/sources/mousedragfilter/CMakeLists.txt b/toonz/sources/mousedragfilter/CMakeLists.txt index 5eeb0fd..d825b6c 100644 --- a/toonz/sources/mousedragfilter/CMakeLists.txt +++ b/toonz/sources/mousedragfilter/CMakeLists.txt @@ -3,7 +3,7 @@ if(BUILD_ENV_APPLE) project(MouseDragFilter) include_directories(.) - find_library(FOUNDATION_LIBRARY NAMES foundation) + find_library(FOUNDATION_LIBRARY NAMES Foundation) find_library(CG_LIBRARY NAMES CoreGraphics) add_library(mousedragfilter mousedragfilter.mm mousedragfilter.h) target_link_libraries(mousedragfilter ${CG_LIBRARY} ${FOUNDATION_LIBRARY}) diff --git a/toonz/sources/tcleanupper/tcleanupper.cpp b/toonz/sources/tcleanupper/tcleanupper.cpp index b750387..d22a1aa 100644 --- a/toonz/sources/tcleanupper/tcleanupper.cpp +++ b/toonz/sources/tcleanupper/tcleanupper.cpp @@ -439,10 +439,19 @@ static void cleanupLevel(TXshSimpleLevel *xl, std::set fidsInXsheet, updater.update(fid, ri); continue; } - double dpix, dpiy; - original->getDpi(dpix, dpiy); - cl->setCustomDpi((dpix == 0 && dpiy == 0) ? xl->getProperties()->getDpi() - : TPointD()); + // Obtain the source dpi. Changed it to be done once at the first frame of + // each level in order to avoid the following problem: + // If the original raster level has no dpi (such as TGA images), obtaining + // dpi in every frame causes dpi mismatch between the first frame and the + // following frames, since the value + // TXshSimpleLevel::m_properties->getDpi() will be changed to the + // dpi of cleanup camera (= TLV's dpi) after finishing the first frame. + if (firstImage) { + TPointD dpi; + original->getDpi(dpi.x, dpi.y); + if (dpi.x == 0 && dpi.y == 0) dpi = xl->getProperties()->getDpi(); + cl->setSourceDpi(dpi); + } CleanupPreprocessedImage *cpi; { diff --git a/toonz/sources/tnztools/CMakeLists.txt b/toonz/sources/tnztools/CMakeLists.txt index 4fd4c19..172a11a 100644 --- a/toonz/sources/tnztools/CMakeLists.txt +++ b/toonz/sources/tnztools/CMakeLists.txt @@ -33,6 +33,7 @@ set(HEADERS ${MOC_HEADERS} ../include/tools/toolcommandids.h ../include/tools/toolutils.h ../include/tools/RGBpicker.h + mypainttoonzbrush.h ) set(SOURCES @@ -92,6 +93,7 @@ set(SOURCES screenpicker.cpp fingertool.cpp rulertool.cpp + mypainttoonzbrush.cpp ) set(RESOURCES tnztools.qrc) @@ -124,4 +126,4 @@ include_directories( _find_toonz_library(EXTRA_LIBS "tnzcore;tnzbase;tnzext;toonzlib;toonzqt") -target_link_libraries(tnztools Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Network Qt5::OpenGL ${GLUT_LIB} ${EXTRA_LIBS} ${GL_LIB}) +target_link_libraries(tnztools Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Network Qt5::OpenGL ${GLUT_LIB} ${EXTRA_LIBS} ${GL_LIB} ${MYPAINT_LIB_LDFLAGS}) diff --git a/toonz/sources/tnztools/brushtool.cpp b/toonz/sources/tnztools/brushtool.cpp index ab9b4c5..d6b4f21 100644 --- a/toonz/sources/tnztools/brushtool.cpp +++ b/toonz/sources/tnztools/brushtool.cpp @@ -27,6 +27,8 @@ #include "toonz/toonzimageutils.h" #include "toonz/palettecontroller.h" #include "toonz/stage2.h" +#include "tw/keycodes.h" +#include "toonz/preferences.h" // TnzCore includes #include "tstream.h" @@ -34,7 +36,8 @@ #include "tvectorimage.h" #include "tenv.h" #include "tregion.h" -#include "tstroke.h" +#include "tinbetween.h" + #include "tgl.h" #include "trop.h" @@ -57,6 +60,9 @@ TEnv::IntVar BrushBreakSharpAngles("InknpaintBrushBreakSharpAngles", 0); TEnv::IntVar RasterBrushPencilMode("InknpaintRasterBrushPencilMode", 0); TEnv::IntVar BrushPressureSensitivity("InknpaintBrushPressureSensitivity", 1); TEnv::DoubleVar RasterBrushHardness("RasterBrushHardness", 100); +TEnv::IntVar VectorBrushFrameRange("VectorBrushFrameRange", 0); +TEnv::IntVar VectorBrushSnap("VectorBrushSnap", 0); +TEnv::IntVar VectorBrushSnapSensitivity("VectorBrushSnapSensitivity", 0); //------------------------------------------------------------------- @@ -68,6 +74,18 @@ TEnv::DoubleVar RasterBrushHardness("RasterBrushHardness", 100); #define MITER_WSTR L"miter_join" #define CUSTOM_WSTR L"" +#define LINEAR_WSTR L"Linear" +#define EASEIN_WSTR L"In" +#define EASEOUT_WSTR L"Out" +#define EASEINOUT_WSTR L"In&Out" + +#define LOW_WSTR L"Low" +#define MEDIUM_WSTR L"Med" +#define HIGH_WSTR L"High" + +const double SNAPPING_LOW = 5.0; +const double SNAPPING_MEDIUM = 25.0; +const double SNAPPING_HIGH = 100.0; //------------------------------------------------------------------- // // (Da mettere in libreria) : funzioni che spezzano una stroke @@ -675,6 +693,15 @@ void SmoothStroke::endStroke() { //-------------------------------------------------------------------------------------------------- +void SmoothStroke::clearPoints() { + m_outputIndex = 0; + m_readIndex = -1; + m_outputPoints.clear(); + m_rawPoints.clear(); +} + +//-------------------------------------------------------------------------------------------------- + void SmoothStroke::getSmoothPoints(std::vector &smoothPoints) { int n = m_outputPoints.size(); for (int i = m_readIndex + 1; i <= m_outputIndex && i < n; ++i) { @@ -752,7 +779,12 @@ BrushTool::BrushTool(std::string name, int targetType) , m_enabled(false) , m_isPrompting(false) , m_firstTime(true) + , m_firstFrameRange(true) , m_presetsLoaded(false) + , m_frameRange("Range:") + , m_snap("Snap", false) + , m_snapSensitivity("Sensitivity:") + , m_targetType(targetType) , m_workingFrameId(TFrameId()) { bind(targetType); @@ -775,6 +807,24 @@ BrushTool::BrushTool(std::string name, int targetType) } m_prop[0].bind(m_pressure); + + if (targetType & TTool::Vectors) { + m_frameRange.addValue(L"Off"); + m_frameRange.addValue(LINEAR_WSTR); + m_frameRange.addValue(EASEIN_WSTR); + m_frameRange.addValue(EASEOUT_WSTR); + m_frameRange.addValue(EASEINOUT_WSTR); + m_prop[0].bind(m_frameRange); + m_frameRange.setId("FrameRange"); + m_prop[0].bind(m_snap); + m_snap.setId("Snap"); + m_snapSensitivity.addValue(LOW_WSTR); + m_snapSensitivity.addValue(MEDIUM_WSTR); + m_snapSensitivity.addValue(HIGH_WSTR); + m_prop[0].bind(m_snapSensitivity); + m_snapSensitivity.setId("SnapSensitivity"); + } + m_prop[0].bind(m_preset); m_preset.setId("BrushPreset"); m_preset.addValue(CUSTOM_WSTR); @@ -968,6 +1018,9 @@ void BrushTool::updateTranslation() { m_capStyle.setQStringName(tr("Cap")); m_joinStyle.setQStringName(tr("Join")); m_miterJoinLimit.setQStringName(tr("Miter:")); + m_frameRange.setQStringName("Range:"); + m_snap.setQStringName("Snap"); + m_snapSensitivity.setQStringName(""); } //--------------------------------------------------------------------------------------------------- @@ -1015,12 +1068,29 @@ void BrushTool::onActivate() { m_accuracy.setValue(BrushAccuracy); m_smooth.setValue(BrushSmooth); m_hardness.setValue(RasterBrushHardness); + if (m_targetType & TTool::Vectors) { + m_frameRange.setIndex(VectorBrushFrameRange); + m_snap.setValue(VectorBrushSnap); + m_snapSensitivity.setIndex(VectorBrushSnapSensitivity); + switch (VectorBrushSnapSensitivity) { + case 0: + m_minDistance2 = SNAPPING_LOW; + break; + case 1: + m_minDistance2 = SNAPPING_MEDIUM; + break; + case 2: + m_minDistance2 = SNAPPING_HIGH; + break; + } + } } if (m_targetType & TTool::ToonzImage) { m_brushPad = ToolUtils::getBrushPad(m_rasThickness.getValue().second, m_hardness.getValue() * 0.01); setWorkAndBackupImages(); } + resetFrameRange(); // TODO:app->editImageOrSpline(); } @@ -1042,6 +1112,7 @@ void BrushTool::onDeactivate() { } m_workRas = TRaster32P(); m_backupRas = TRasterCM32P(); + resetFrameRange(); } //-------------------------------------------------------------------------------------------------- @@ -1155,7 +1226,7 @@ void BrushTool::leftButtonDown(const TPointD &pos, const TMouseEvent &e) { invalidate(invalidateRect); } - } else { + } else { // vector happens here m_track.clear(); double thickness = (m_pressure.getValue() || m_isPath) @@ -1164,10 +1235,16 @@ void BrushTool::leftButtonDown(const TPointD &pos, const TMouseEvent &e) { /*--- ストロークの最初にMaxサイズの円が描かれてしまう不具合を防止する ---*/ if (m_pressure.getValue() && e.m_pressure == 255) - thickness = m_rasThickness.getValue().first; - + thickness = m_rasThickness.getValue().first; + m_currThickness = thickness; m_smoothStroke.beginStroke(m_smooth.getValue()); - addTrackPoint(TThickPoint(pos, thickness), getPixelSize() * getPixelSize()); + + if ((m_targetType & TTool::Vectors) && m_foundFirstSnap) { + addTrackPoint(TThickPoint(m_firstSnapPoint, thickness), + getPixelSize() * getPixelSize()); + } else + addTrackPoint(TThickPoint(pos, thickness), + getPixelSize() * getPixelSize()); } } @@ -1285,7 +1362,27 @@ void BrushTool::leftButtonDrag(const TPointD &pos, const TMouseEvent &e) { (m_pressure.getValue() || m_isPath) ? computeThickness(e.m_pressure, m_thickness, m_isPath) : m_thickness.getValue().second * 0.5; - addTrackPoint(TThickPoint(pos, thickness), getPixelSize() * getPixelSize()); + + m_currThickness = thickness; + + m_mousePos = pos; + m_lastSnapPoint = pos; + m_foundLastSnap = false; + checkStrokeSnapping(false); + checkGuideSnapping(false); + m_brushPos = m_lastSnapPoint; + + if (e.isShiftPressed()) { + m_smoothStroke.clearPoints(); + m_track.add(TThickPoint(m_brushPos, thickness), + getPixelSize() * getPixelSize()); + m_track.removeMiddlePoints(); + } + + else if (m_dragDraw) + addTrackPoint(TThickPoint(pos, thickness), + getPixelSize() * getPixelSize()); + invalidate(); } } @@ -1300,9 +1397,16 @@ void BrushTool::leftButtonUp(const TPointD &pos, const TMouseEvent &e) { if (m_isPath) { double error = 20.0 * getPixelSize(); - flushTrackPoint(); - TStroke *stroke = m_track.makeStroke(error); - int points = stroke->getControlPointCount(); + + TStroke *stroke; + if (e.isShiftPressed()) { + m_track.removeMiddlePoints(); + stroke = m_track.makeStroke(0); + } else { + flushTrackPoint(); + stroke = m_track.makeStroke(error); + } + int points = stroke->getControlPointCount(); if (TVectorImageP vi = getImage(true)) { struct Cleanup { @@ -1344,12 +1448,30 @@ void BrushTool::leftButtonUp(const TPointD &pos, const TMouseEvent &e) { m_track.clear(); return; } + + if (vi && m_snap.getValue() && m_foundLastSnap) { + addTrackPoint(TThickPoint(m_lastSnapPoint, m_currThickness), + getPixelSize() * getPixelSize()); + } + m_strokeIndex1 = -1; + m_strokeIndex2 = -1; + m_w1 = -1; + m_w2 = -2; + m_foundFirstSnap = false; + m_foundLastSnap = false; + m_track.filterPoints(); double error = 30.0 / (1 + 0.5 * m_accuracy.getValue()); error *= getPixelSize(); - flushTrackPoint(); - TStroke *stroke = m_track.makeStroke(error); + TStroke *stroke; + if (e.isShiftPressed()) { + m_track.removeMiddlePoints(); + stroke = m_track.makeStroke(0); + } else { + flushTrackPoint(); + stroke = m_track.makeStroke(error); + } stroke->setStyle(m_styleId); { TStroke::OutlineOptions &options = stroke->outlineOptions(); @@ -1368,13 +1490,77 @@ void BrushTool::leftButtonUp(const TPointD &pos, const TMouseEvent &e) { // autoclose proprio dal fatto che // hanno 1 solo chunk. stroke->insertControlPoints(0.5); + if (m_frameRange.getIndex()) { + if (m_firstFrameId == -1) { + m_firstStroke = new TStroke(*stroke); + m_firstFrameId = getFrameId(); + TTool::Application *application = TTool::getApplication(); + if (application) { + m_col = application->getCurrentColumn()->getColumnIndex(); + m_firstFrame = application->getCurrentFrame()->getFrame(); + } + m_rangeTrack = m_track; + if (m_firstFrameRange) { + m_veryFirstCol = m_col; + m_veryFirstFrame = m_firstFrame; + m_veryFirstFrameId = m_firstFrameId; + } + } else if (m_firstFrameId == getFrameId()) { + if (m_firstStroke) { + delete m_firstStroke; + m_firstStroke = 0; + } + m_firstStroke = new TStroke(*stroke); + m_rangeTrack = m_track; + } else { + TFrameId currentId = getFrameId(); + int curCol = 0, curFrame = 0; + TTool::Application *application = TTool::getApplication(); + if (application) { + curCol = application->getCurrentColumn()->getColumnIndex(); + curFrame = application->getCurrentFrame()->getFrame(); + } + bool success = + doFrameRangeStrokes(m_firstFrameId, m_firstStroke, getFrameId(), + stroke, m_firstFrameRange); + if (e.isCtrlPressed()) { + if (application) { + if (m_firstFrameId > currentId) { + if (application->getCurrentFrame()->isEditingScene()) { + application->getCurrentColumn()->setColumnIndex(curCol); + application->getCurrentFrame()->setFrame(curFrame); + } else + application->getCurrentFrame()->setFid(currentId); + } + } + resetFrameRange(); + m_firstStroke = new TStroke(*stroke); + m_rangeTrack = m_track; + m_firstFrameId = currentId; + m_firstFrameRange = false; + } - addStrokeToImage(getApplication(), vi, stroke, m_breakAngles.getValue(), - m_isFrameCreated, m_isLevelCreated); - TRectD bbox = stroke->getBBox().enlarge(2) + m_track.getModifiedRegion(); - invalidate(); + if (application && !e.isCtrlPressed()) { + if (application->getCurrentFrame()->isEditingScene()) { + application->getCurrentColumn()->setColumnIndex(m_veryFirstCol); + application->getCurrentFrame()->setFrame(m_veryFirstFrame); + } else + application->getCurrentFrame()->setFid(m_veryFirstFrameId); + } + + if (!e.isCtrlPressed()) { + resetFrameRange(); + } + } + } else { + addStrokeToImage(getApplication(), vi, stroke, m_breakAngles.getValue(), + m_isFrameCreated, m_isLevelCreated); + TRectD bbox = stroke->getBBox().enlarge(2) + m_track.getModifiedRegion(); + invalidate(); + } assert(stroke); m_track.clear(); + } else if (TToonzImageP ti = image) { finishRasterBrush(pos, e.m_pressure); } @@ -1382,6 +1568,111 @@ void BrushTool::leftButtonUp(const TPointD &pos, const TMouseEvent &e) { //-------------------------------------------------------------------------------------------------- +bool BrushTool::keyDown(int key, TUINT32 b, const TPoint &point) { + if (key == TwConsts::TK_Esc) { + resetFrameRange(); + } + return true; +} + +//-------------------------------------------------------------------------------------------------- + +bool BrushTool::doFrameRangeStrokes(TFrameId firstFrameId, TStroke *firstStroke, + TFrameId lastFrameId, TStroke *lastStroke, + bool drawFirstStroke) { + TXshSimpleLevel *sl = + TTool::getApplication()->getCurrentLevel()->getLevel()->getSimpleLevel(); + TStroke *first = new TStroke(); + TStroke *last = new TStroke(); + TVectorImageP firstImage = new TVectorImage(); + TVectorImageP lastImage = new TVectorImage(); + + *first = *firstStroke; + *last = *lastStroke; + bool swapped = false; + if (firstFrameId > lastFrameId) { + tswap(firstFrameId, lastFrameId); + *first = *lastStroke; + *last = *firstStroke; + swapped = true; + } + + firstImage->addStroke(first); + lastImage->addStroke(last); + assert(firstFrameId <= lastFrameId); + + std::vector allFids; + sl->getFids(allFids); + std::vector::iterator i0 = allFids.begin(); + while (i0 != allFids.end() && *i0 < firstFrameId) i0++; + if (i0 == allFids.end()) return false; + std::vector::iterator i1 = i0; + while (i1 != allFids.end() && *i1 <= lastFrameId) i1++; + assert(i0 < i1); + std::vector fids(i0, i1); + int m = fids.size(); + assert(m > 0); + + TUndoManager::manager()->beginBlock(); + for (int i = 0; i < m; ++i) { + TFrameId fid = fids[i]; + assert(firstFrameId <= fid && fid <= lastFrameId); + + // This is an attempt to divide the tween evenly + double t = m > 1 ? (double)i / (double)(m - 1) : 0.5; + double s = t; + switch (m_frameRange.getIndex()) { + case 1: // LINEAR_WSTR + break; + case 2: // EASEIN_WSTR + s = t * t; + break; // s'(0) = 0 + case 3: // EASEOUT_WSTR + s = t * (2 - t); + break; // s'(1) = 0 + case 4: // EASEINOUT_WSTR: + s = t * t * (3 - 2 * t); + break; // s'(0) = s'(1) = 0 + } + + TTool::Application *app = TTool::getApplication(); + if (app) { + if (app->getCurrentFrame()->isEditingScene()) + app->getCurrentFrame()->setFrame(fid.getNumber() - 1); + else + app->getCurrentFrame()->setFid(fid); + } + + TVectorImageP img = sl->getFrame(fid, true); + if (t == 0) { + if (!swapped && !drawFirstStroke) { + } else + addStrokeToImage(getApplication(), img, firstImage->getStroke(0), + m_breakAngles.getValue(), m_isFrameCreated, + m_isLevelCreated); + } else if (t == 1) { + if (swapped && !drawFirstStroke) { + } else + addStrokeToImage(getApplication(), img, lastImage->getStroke(0), + m_breakAngles.getValue(), m_isFrameCreated, + m_isLevelCreated); + } else { + assert(firstImage->getStrokeCount() == 1); + assert(lastImage->getStrokeCount() == 1); + TVectorImageP vi = TInbetween(firstImage, lastImage).tween(s); + assert(vi->getStrokeCount() == 1); + addStrokeToImage(getApplication(), img, vi->getStroke(0), + m_breakAngles.getValue(), m_isFrameCreated, + m_isLevelCreated); + } + } + TUndoManager::manager()->endBlock(); + notifyImageChanged(); + return true; +} + +//-------------------------------------------------------------------------------------------------- + void BrushTool::addTrackPoint(const TThickPoint &point, double pixelSize2) { m_smoothStroke.addPoint(point); std::vector pts; @@ -1655,8 +1946,15 @@ void BrushTool::mouseMove(const TPointD &pos, const TMouseEvent &e) { max); } else { m_brushPos = pos; + + m_mousePos = pos; + m_firstSnapPoint = pos; + m_foundFirstSnap = false; + + checkStrokeSnapping(true); + checkGuideSnapping(true); + m_brushPos = m_firstSnapPoint; } - m_mousePos = pos; invalidate(); if (m_minThick == 0 && m_maxThick == 0) { @@ -1672,9 +1970,129 @@ void BrushTool::mouseMove(const TPointD &pos, const TMouseEvent &e) { //------------------------------------------------------------------------------------------------------------- +void BrushTool::checkStrokeSnapping(bool beforeMousePress) { + if (Preferences::instance()->getVectorSnappingTarget() == 1) return; + + TVectorImageP vi(getImage(false)); + if (vi && m_snap.getValue()) { + m_dragDraw = true; + double minDistance2 = m_minDistance2; + if (beforeMousePress) + m_strokeIndex1 = -1; + else + m_strokeIndex2 = -1; + int i, strokeNumber = vi->getStrokeCount(); + TStroke *stroke; + double distance2, outW; + + for (i = 0; i < strokeNumber; i++) { + stroke = vi->getStroke(i); + if (stroke->getNearestW(m_mousePos, outW, distance2) && + distance2 < minDistance2) { + minDistance2 = distance2; + beforeMousePress ? m_strokeIndex1 = i : m_strokeIndex2 = i; + if (areAlmostEqual(outW, 0.0, 1e-3)) + beforeMousePress ? m_w1 = 0.0 : m_w2 = 0.0; + else if (areAlmostEqual(outW, 1.0, 1e-3)) + beforeMousePress ? m_w1 = 1.0 : m_w2 = 1.0; + else + beforeMousePress ? m_w1 = outW : m_w2 = outW; + TThickPoint point1; + beforeMousePress ? point1 = stroke->getPoint(m_w1) + : point1 = stroke->getPoint(m_w2); + if (beforeMousePress) { + m_firstSnapPoint = TPointD(point1.x, point1.y); + m_foundFirstSnap = true; + } else { + m_lastSnapPoint = TPointD(point1.x, point1.y); + m_foundLastSnap = true; + if (distance2 < 2.0) m_dragDraw = false; + } + } + } + } +} + +//------------------------------------------------------------------------------------------------------------- + +void BrushTool::checkGuideSnapping(bool beforeMousePress) { + if (Preferences::instance()->getVectorSnappingTarget() == 0) return; + bool foundSnap; + TPointD snapPoint; + beforeMousePress ? foundSnap = m_foundFirstSnap : foundSnap = m_foundLastSnap; + beforeMousePress ? snapPoint = m_firstSnapPoint : snapPoint = m_lastSnapPoint; + if ((m_targetType & TTool::Vectors) && m_snap.getValue()) { + // check guide snapping + int vGuideCount = 0, hGuideCount = 0; + double guideDistance = sqrt(m_minDistance2); + TTool::Viewer *viewer = getViewer(); + if (viewer) { + vGuideCount = viewer->getVGuideCount(); + hGuideCount = viewer->getHGuideCount(); + } + double distanceToVGuide = -1.0, distanceToHGuide = -1.0; + double vGuide, hGuide; + bool useGuides = false; + if (vGuideCount) { + for (int j = 0; j < vGuideCount; j++) { + double guide = viewer->getVGuide(j); + double tempDistance = abs(guide - m_mousePos.y); + if (tempDistance < guideDistance && + (distanceToVGuide < 0 || tempDistance < distanceToVGuide)) { + distanceToVGuide = tempDistance; + vGuide = guide; + useGuides = true; + } + } + } + if (hGuideCount) { + for (int j = 0; j < hGuideCount; j++) { + double guide = viewer->getHGuide(j); + double tempDistance = abs(guide - m_mousePos.x); + if (tempDistance < guideDistance && + (distanceToHGuide < 0 || tempDistance < distanceToHGuide)) { + distanceToHGuide = tempDistance; + hGuide = guide; + useGuides = true; + } + } + } + if (useGuides && foundSnap) { + double currYDistance = abs(snapPoint.y - m_mousePos.y); + double currXDistance = abs(snapPoint.x - m_mousePos.x); + double hypotenuse = + sqrt(pow(currYDistance, 2.0) + pow(currXDistance, 2.0)); + if ((distanceToVGuide >= 0 && distanceToVGuide < hypotenuse) || + (distanceToHGuide >= 0 && distanceToHGuide < hypotenuse)) + useGuides = true; + else + useGuides = false; + } + if (useGuides) { + assert(distanceToHGuide >= 0 || distanceToVGuide >= 0); + if (distanceToHGuide < 0 || + (distanceToVGuide <= distanceToHGuide && distanceToVGuide >= 0)) { + snapPoint.y = vGuide; + snapPoint.x = m_mousePos.x; + + } else { + snapPoint.y = m_mousePos.y; + snapPoint.x = hGuide; + } + beforeMousePress ? m_foundFirstSnap = true : m_foundLastSnap = true; + beforeMousePress ? m_firstSnapPoint = snapPoint : m_lastSnapPoint = + snapPoint; + } + } +} + +//------------------------------------------------------------------------------------------------------------- + void BrushTool::draw() { /*--ショートカットでのツール切り替え時に赤点が描かれるのを防止する--*/ - if (m_minThick == 0 && m_maxThick == 0) return; + if (m_minThick == 0 && m_maxThick == 0 && + !Preferences::instance()->getShow0ThickLines()) + return; TImageP img = getImage(false, 1); @@ -1682,6 +2100,38 @@ void BrushTool::draw() { tglColor(m_isPrompting ? TPixel32::Green : m_currentColor); m_track.drawAllFragments(); + // snapping + TVectorImageP vi = img; + if ((m_targetType & TTool::Vectors) && m_snap.getValue()) { + m_pixelSize = getPixelSize(); + double thick = 6.0 * m_pixelSize; + if (m_foundFirstSnap) { + tglColor(TPixelD(0.1, 0.9, 0.1)); + tglDrawCircle(m_firstSnapPoint, thick); + } + + TThickPoint point2; + + if (m_foundLastSnap) { + tglColor(TPixelD(0.1, 0.9, 0.1)); + tglDrawCircle(m_lastSnapPoint, thick); + } + } + + // frame range + if (m_firstStroke) { + glColor3d(1.0, 0.0, 0.0); + m_rangeTrack.drawAllFragments(); + glColor3d(0.0, 0.6, 0.0); + TPointD firstPoint = m_rangeTrack.getFirstPoint(); + TPointD topLeftCorner = TPointD(firstPoint.x - 5, firstPoint.y - 5); + TPointD topRightCorner = TPointD(firstPoint.x + 5, firstPoint.y - 5); + TPointD bottomLeftCorner = TPointD(firstPoint.x - 5, firstPoint.y + 5); + TPointD bottomRightCorner = TPointD(firstPoint.x + 5, firstPoint.y + 5); + tglDrawSegment(topLeftCorner, bottomRightCorner); + tglDrawSegment(topRightCorner, bottomLeftCorner); + } + if (getApplication()->getCurrentObject()->isSpline()) return; // Draw the brush outline - change color when the Ink / Paint check is @@ -1789,6 +2239,18 @@ void BrushTool::setWorkAndBackupImages() { //------------------------------------------------------------------ +void BrushTool::resetFrameRange() { + m_rangeTrack.clear(); + m_firstFrameId = -1; + if (m_firstStroke) { + delete m_firstStroke; + m_firstStroke = 0; + } + m_firstFrameRange = true; +} + +//------------------------------------------------------------------ + bool BrushTool::onPropertyChanged(std::string propertyName) { // Set the following to true whenever a different piece of interface must // be refreshed - done once at the end. @@ -1836,6 +2298,26 @@ bool BrushTool::onPropertyChanged(std::string propertyName) { VectorJoinStyle = m_joinStyle.getIndex(); } else if (propertyName == m_miterJoinLimit.getName()) { VectorMiterValue = m_miterJoinLimit.getValue(); + } else if (propertyName == m_frameRange.getName()) { + int index = m_frameRange.getIndex(); + VectorBrushFrameRange = index; + if (index == 0) resetFrameRange(); + } else if (propertyName == m_snap.getName()) { + VectorBrushSnap = m_snap.getValue(); + } else if (propertyName == m_snapSensitivity.getName()) { + int index = m_snapSensitivity.getIndex(); + VectorBrushSnapSensitivity = index; + switch (index) { + case 0: + m_minDistance2 = SNAPPING_LOW; + break; + case 1: + m_minDistance2 = SNAPPING_MEDIUM; + break; + case 2: + m_minDistance2 = SNAPPING_HIGH; + break; + } } if (m_targetType & TTool::Vectors) { @@ -1909,6 +2391,9 @@ void BrushTool::loadPreset() { m_capStyle.setIndex(preset.m_cap); m_joinStyle.setIndex(preset.m_join); m_miterJoinLimit.setValue(preset.m_miter); + m_frameRange.setIndex(preset.m_frameRange); + m_snap.setValue(preset.m_snap); + m_snapSensitivity.setIndex(preset.m_snapSensitivity); } else { m_rasThickness.setValue(TDoublePairProperty::Value( std::max(preset.m_min, 1.0), preset.m_max)); @@ -1938,16 +2423,19 @@ void BrushTool::addPreset(QString name) { preset.m_max = m_rasThickness.getValue().second; } - preset.m_acc = m_accuracy.getValue(); - preset.m_smooth = m_smooth.getValue(); - preset.m_hardness = m_hardness.getValue(); - preset.m_selective = m_selective.getValue(); - preset.m_pencil = m_pencil.getValue(); - preset.m_breakAngles = m_breakAngles.getValue(); - preset.m_pressure = m_pressure.getValue(); - preset.m_cap = m_capStyle.getIndex(); - preset.m_join = m_joinStyle.getIndex(); - preset.m_miter = m_miterJoinLimit.getValue(); + preset.m_acc = m_accuracy.getValue(); + preset.m_smooth = m_smooth.getValue(); + preset.m_hardness = m_hardness.getValue(); + preset.m_selective = m_selective.getValue(); + preset.m_pencil = m_pencil.getValue(); + preset.m_breakAngles = m_breakAngles.getValue(); + preset.m_pressure = m_pressure.getValue(); + preset.m_cap = m_capStyle.getIndex(); + preset.m_join = m_joinStyle.getIndex(); + preset.m_miter = m_miterJoinLimit.getValue(); + preset.m_frameRange = m_frameRange.getIndex(); + preset.m_snap = m_snap.getValue(); + preset.m_snapSensitivity = m_snapSensitivity.getIndex(); // Pass the preset to the manager m_presetsManager.addPreset(preset); @@ -2005,7 +2493,12 @@ BrushData::BrushData() , m_pressure(false) , m_cap(0) , m_join(0) - , m_miter(0) {} + , m_frameRange(0) + , m_snap(false) + , m_snapSensitivity(0) + , m_miter(0) + , m_modifierSize(0.0) + , m_modifierOpacity(0.0) {} //---------------------------------------------------------------------------------------------------------- @@ -2024,7 +2517,12 @@ BrushData::BrushData(const std::wstring &name) , m_pressure(false) , m_cap(0) , m_join(0) - , m_miter(0) {} + , m_frameRange(0) + , m_snap(false) + , m_snapSensitivity(0) + , m_miter(0) + , m_modifierSize(0.0) + , m_modifierOpacity(0.0) {} //---------------------------------------------------------------------------------------------------------- @@ -2067,6 +2565,18 @@ void BrushData::saveData(TOStream &os) { os.closeChild(); os.openChild("Miter"); os << m_miter; + os.openChild("Frame_Range"); + os << (int)m_frameRange; + os.openChild("Snap"); + os << (int)m_snap; + os.openChild("SnapSensitivity"); + os << (int)m_snapSensitivity; + os.closeChild(); + os.openChild("Modifier_Size"); + os << m_modifierSize; + os.closeChild(); + os.openChild("Modifier_Opacity"); + os << m_modifierOpacity; os.closeChild(); } @@ -2103,6 +2613,16 @@ void BrushData::loadData(TIStream &is) { is >> m_join, is.matchEndTag(); else if (tagName == "Miter") is >> m_miter, is.matchEndTag(); + else if (tagName == "Frame_Range") + is >> m_frameRange, is.matchEndTag(); + else if (tagName == "Snap") + is >> m_snap, is.matchEndTag(); + else if (tagName == "SnapSensitivity") + is >> m_snapSensitivity, is.matchEndTag(); + else if (tagName == "Modifier_Size") + is >> m_modifierSize, is.matchEndTag(); + else if (tagName == "Modifier_Opacity") + is >> m_modifierOpacity, is.matchEndTag(); else is.skipCurrentTag(); } diff --git a/toonz/sources/tnztools/brushtool.h b/toonz/sources/tnztools/brushtool.h index 3a87f8e..e24a12b 100644 --- a/toonz/sources/tnztools/brushtool.h +++ b/toonz/sources/tnztools/brushtool.h @@ -7,7 +7,7 @@ #include "tproperty.h" #include "trasterimage.h" #include "ttoonzimage.h" - +#include "tstroke.h" #include "toonz/strokegenerator.h" #include "tools/tool.h" @@ -36,8 +36,9 @@ struct BrushData final : public TPersist { std::wstring m_name; double m_min, m_max, m_acc, m_smooth, m_hardness, m_opacityMin, m_opacityMax; - bool m_selective, m_pencil, m_breakAngles, m_pressure; - int m_cap, m_join, m_miter; + bool m_selective, m_pencil, m_breakAngles, m_pressure, m_snap; + int m_cap, m_join, m_miter, m_frameRange, m_snapSensitivity; + double m_modifierSize, m_modifierOpacity; BrushData(); BrushData(const std::wstring &name); @@ -89,6 +90,8 @@ public: // Both addPoint() and endStroke() generate new smoothed points. // This method will removed generated points void getSmoothPoints(std::vector &smoothPoints); + // Remove all points - used for straight lines + void clearPoints(); private: void generatePoints(); @@ -124,6 +127,7 @@ public: void leftButtonDrag(const TPointD &pos, const TMouseEvent &e) override; void leftButtonUp(const TPointD &pos, const TMouseEvent &e) override; void mouseMove(const TPointD &pos, const TMouseEvent &e) override; + bool keyDown(int key, TUINT32 b, const TPoint &point) override; void draw() override; @@ -134,7 +138,7 @@ public: TPropertyGroup *getProperties(int targetType) override; bool onPropertyChanged(std::string propertyName) override; - + void resetFrameRange(); void onImageChanged() override; void setWorkAndBackupImages(); void updateWorkAndBackupRasters(const TRect &rect); @@ -151,6 +155,11 @@ public: void addTrackPoint(const TThickPoint &point, double pixelSize2); void flushTrackPoint(); + bool doFrameRangeStrokes(TFrameId firstFrameId, TStroke *firstStroke, + TFrameId lastFrameId, TStroke *lastStroke, + bool drawFirstStroke = true); + void checkGuideSnapping(bool beforeMousePress); + void checkStrokeSnapping(bool beforeMousePress); protected: TPropertyGroup m_prop[2]; @@ -165,24 +174,34 @@ protected: TBoolProperty m_breakAngles; TBoolProperty m_pencil; TBoolProperty m_pressure; + TBoolProperty m_snap; + TEnumProperty m_frameRange; + TEnumProperty m_snapSensitivity; TEnumProperty m_capStyle; TEnumProperty m_joinStyle; TIntProperty m_miterJoinLimit; StrokeGenerator m_track; + StrokeGenerator m_rangeTrack; RasterStrokeGenerator *m_rasterTrack; - + TStroke *m_firstStroke; TTileSetCM32 *m_tileSet; TTileSaverCM32 *m_tileSaver; - + TFrameId m_firstFrameId, m_veryFirstFrameId; TPixel32 m_currentColor; int m_styleId; double m_minThick, m_maxThick; + // for snapping and framerange + int m_strokeIndex1, m_strokeIndex2, m_col, m_firstFrame, m_veryFirstFrame, + m_veryFirstCol, m_targetType; + double m_w1, m_w2, m_pixelSize, m_currThickness, m_minDistance2; + bool m_foundFirstSnap = false, m_foundLastSnap = false, m_dragDraw = true; TRectD m_modifiedRegion; TPointD m_dpiScale, m_mousePos, //!< Current mouse position, in world coordinates. - m_brushPos; //!< World position the brush will be painted at. + m_brushPos, //!< World position the brush will be painted at. + m_firstSnapPoint, m_lastSnapPoint; BluredBrush *m_bluredBrush; QRadialGradient m_brushPad; @@ -201,7 +220,7 @@ protected: bool m_active, m_enabled, m_isPrompting, //!< Whether the tool is prompting for spline //! substitution. - m_firstTime, m_isPath, m_presetsLoaded; + m_firstTime, m_isPath, m_presetsLoaded, m_firstFrameRange; /*--- 作業中のFrameIdをクリック時に保存し、マウスリリース時(Undoの登録時)に別のフレームに diff --git a/toonz/sources/tnztools/fullcolorbrushtool.cpp b/toonz/sources/tnztools/fullcolorbrushtool.cpp index ac7841d..127019d 100644 --- a/toonz/sources/tnztools/fullcolorbrushtool.cpp +++ b/toonz/sources/tnztools/fullcolorbrushtool.cpp @@ -9,7 +9,7 @@ #include "tools/toolhandle.h" #include "tools/tooloptions.h" -#include "bluredbrush.h" +#include "mypainttoonzbrush.h" // TnzQt includes #include "toonzqt/dvdialog.h" @@ -24,6 +24,7 @@ #include "toonz/strokegenerator.h" #include "toonz/tstageobject.h" #include "toonz/palettecontroller.h" +#include "toonz/mypaintbrushstyle.h" // TnzCore includes #include "tgl.h" @@ -35,6 +36,7 @@ #include "tstream.h" #include "tstroke.h" #include "timagecache.h" +#include "tpixelutils.h" // Qt includes #include // Qt translation support @@ -47,6 +49,8 @@ TEnv::IntVar FullcolorPressureSensitivity("FullcolorPressureSensitivity", 1); TEnv::DoubleVar FullcolorBrushHardness("FullcolorBrushHardness", 100); TEnv::DoubleVar FullcolorMinOpacity("FullcolorMinOpacity", 100); TEnv::DoubleVar FullcolorMaxOpacity("FullcolorMaxOpacity", 100); +TEnv::DoubleVar FullcolorModifierSize("FullcolorModifierSize", 0); +TEnv::DoubleVar FullcolorModifierOpacity("FullcolorModifierOpacity", 100); //---------------------------------------------------------------------------------- @@ -56,31 +60,6 @@ TEnv::DoubleVar FullcolorMaxOpacity("FullcolorMaxOpacity", 100); namespace { -int computeThickness(int pressure, const TIntPairProperty &property, - bool isPath = false) { - if (isPath) return 0.0; - double p = pressure / 255.0; - double t = p * p * p; - int thick0 = property.getValue().first; - int thick1 = property.getValue().second; - return tround(thick0 + (thick1 - thick0) * t); -} - -//---------------------------------------------------------------------------------- - -double computeThickness(int pressure, const TDoublePairProperty &property, - bool isPath = false) { - if (isPath) return 0.0; - double p = pressure / 255.0; - double t = p * p * p; - double thick0 = property.getValue().first; - double thick1 = property.getValue().second; - if (thick1 < 0.0001) thick0 = thick1 = 0.0; - return (thick0 + (thick1 - thick0) * t); -} - -//---------------------------------------------------------------------------------- - class FullColorBrushUndo final : public ToolUtils::TFullColorRasterUndo { TPoint m_offset; QString m_id; @@ -134,10 +113,13 @@ FullColorBrushTool::FullColorBrushTool(std::string name) , m_pressure("Pressure", true) , m_opacity("Opacity", 0, 100, 100, 100, true) , m_hardness("Hardness:", 0, 100, 100) + , m_modifierSize("ModifierSize", -3, 3, 0, true) + , m_modifierOpacity("ModifierOpacity", 0, 100, 100, true) , m_preset("Preset:") - , m_styleId(0) - , m_oldOpacity(1) - , m_brush(0) + , m_minCursorThick(0) + , m_maxCursorThick(0) + , m_enabledPressure(false) + , m_toonz_brush(0) , m_tileSet(0) , m_tileSaver(0) , m_notifier(0) @@ -148,9 +130,14 @@ FullColorBrushTool::FullColorBrushTool(std::string name) m_prop.bind(m_thickness); m_prop.bind(m_hardness); m_prop.bind(m_opacity); + m_prop.bind(m_modifierSize); + m_prop.bind(m_modifierOpacity); m_prop.bind(m_pressure); m_prop.bind(m_preset); + m_preset.setId("BrushPreset"); + + m_brushTimer.start(); } //--------------------------------------------------------------------------------------------------- @@ -171,12 +158,20 @@ void FullColorBrushTool::onCanvasSizeChanged() { //--------------------------------------------------------------------------------------------------- +void FullColorBrushTool::onColorStyleChanged() { + getApplication()->getCurrentTool()->notifyToolChanged(); +} + +//--------------------------------------------------------------------------------------------------- + void FullColorBrushTool::updateTranslation() { m_thickness.setQStringName(tr("Size")); m_pressure.setQStringName(tr("Pressure")); m_opacity.setQStringName(tr("Opacity")); m_hardness.setQStringName(tr("Hardness:")); m_preset.setQStringName(tr("Preset:")); + m_modifierSize.setQStringName(tr("Size")); + m_modifierOpacity.setQStringName(tr("Opacity")); } //--------------------------------------------------------------------------------------------------- @@ -184,7 +179,7 @@ void FullColorBrushTool::updateTranslation() { void FullColorBrushTool::onActivate() { if (!m_notifier) m_notifier = new FullColorBrushToolNotifier(this); - updateCurrentColor(); + updateCurrentStyle(); if (m_firstTime) { m_firstTime = false; @@ -194,11 +189,12 @@ void FullColorBrushTool::onActivate() { m_opacity.setValue( TDoublePairProperty::Value(FullcolorMinOpacity, FullcolorMaxOpacity)); m_hardness.setValue(FullcolorBrushHardness); + m_modifierSize.setValue(FullcolorModifierSize); + m_modifierOpacity.setValue(FullcolorModifierOpacity); } - m_brushPad = ToolUtils::getBrushPad(m_thickness.getValue().second, - m_hardness.getValue() * 0.01); setWorkAndBackupImages(); + onColorStyleChanged(); } //-------------------------------------------------------------------------------------------------- @@ -212,27 +208,64 @@ void FullColorBrushTool::onDeactivate() { //-------------------------------------------------------------------------------------------------- void FullColorBrushTool::updateWorkAndBackupRasters(const TRect &rect) { + if (rect.isEmpty()) return; + TRasterImageP ri = TImageP(getImage(false, 1)); if (!ri) return; TRasterP ras = ri->getRaster(); - TRect _rect = rect * ras->getBounds(); - TRect _lastRect = m_lastRect * ras->getBounds(); - - if (_rect.isEmpty()) return; + const int denominator = 8; + TRect enlargedRect = rect + m_lastRect; + int dx = (enlargedRect.getLx()-1)/denominator+1; + int dy = (enlargedRect.getLy()-1)/denominator+1; if (m_lastRect.isEmpty()) { - m_workRaster->extract(_rect)->clear(); + enlargedRect.x0 -= dx; + enlargedRect.y0 -= dy; + enlargedRect.x1 += dx; + enlargedRect.y1 += dy; + + TRect _rect = enlargedRect*ras->getBounds(); + if (_rect.isEmpty()) return; + + m_workRaster->extract(_rect)->copy(ras->extract(_rect)); m_backUpRas->extract(_rect)->copy(ras->extract(_rect)); - return; + } else { + if (enlargedRect.x0 < m_lastRect.x0) enlargedRect.x0 -= dx; + if (enlargedRect.y0 < m_lastRect.y0) enlargedRect.y0 -= dy; + if (enlargedRect.x1 > m_lastRect.x1) enlargedRect.x1 += dx; + if (enlargedRect.y1 > m_lastRect.y1) enlargedRect.y1 += dy; + + TRect _rect = enlargedRect*ras->getBounds(); + if (_rect.isEmpty()) return; + + TRect _lastRect = m_lastRect * ras->getBounds(); + QList rects = ToolUtils::splitRect(_rect, _lastRect); + for (int i = 0; i < rects.size(); i++) { + m_workRaster->extract(rects[i])->copy(ras->extract(rects[i])); + m_backUpRas->extract(rects[i])->copy(ras->extract(rects[i])); + } } - QList rects = ToolUtils::splitRect(_rect, _lastRect); - for (int i = 0; i < rects.size(); i++) { - m_workRaster->extract(rects[i])->clear(); - m_backUpRas->extract(rects[i])->copy(ras->extract(rects[i])); - } + m_lastRect = enlargedRect; +} + +//-------------------------------------------------------------------------------------------------- + +bool FullColorBrushTool::askRead(const TRect &rect) { + return askWrite(rect); +} + +//-------------------------------------------------------------------------------------------------- + +bool FullColorBrushTool::askWrite(const TRect &rect) { + if (rect.isEmpty()) return true; + m_strokeRect += rect; + m_strokeSegmentRect += rect; + updateWorkAndBackupRasters(rect); + m_tileSaver->save(rect); + return true; } //-------------------------------------------------------------------------------------------------- @@ -249,6 +282,7 @@ bool FullColorBrushTool::preLeftButtonDown() { void FullColorBrushTool::leftButtonDown(const TPointD &pos, const TMouseEvent &e) { + TPointD previousBrushPos = m_brushPos; m_brushPos = m_mousePos = pos; m_mousePressed = true; m_mouseEvent = e; @@ -262,155 +296,102 @@ void FullColorBrushTool::leftButtonDown(const TPointD &pos, /* update color here since the current style might be switched with numpad * shortcut keys */ - updateCurrentColor(); + updateCurrentStyle(); - TRasterP ras = ri->getRaster(); - TDimension dim = ras->getSize(); + TRasterP ras = ri->getRaster(); if (!(m_workRaster && m_backUpRas)) setWorkAndBackupImages(); m_workRaster->lock(); - double maxThick = m_thickness.getValue().second; - double thickness = m_pressure.getValue() - ? computeThickness(e.m_pressure, m_thickness) - : maxThick; - double opacity = - (m_pressure.getValue() ? computeThickness(e.m_pressure, m_opacity) - : m_opacity.getValue().second) * - 0.01; - TPointD rasCenter = TPointD(dim.lx * 0.5, dim.ly * 0.5); - TThickPoint point(pos + rasCenter, thickness); - TPointD halfThick(maxThick * 0.5, maxThick * 0.5); - TRectD invalidateRect(pos - halfThick, pos + halfThick); - - m_points.clear(); - m_points.push_back(point); + TPointD rasCenter = ras->getCenterD(); + TPointD point(pos + rasCenter); + double pressure = m_enabledPressure && e.isTablet() ? e.m_pressure/255.0 : 0.5; m_tileSet = new TTileSetFullColor(ras->getSize()); m_tileSaver = new TTileSaverFullColor(ras, m_tileSet); - double hardness = m_hardness.getValue() * 0.01; - - m_brush = - new BluredBrush(m_workRaster, maxThick, m_brushPad, hardness == 1.0); - m_strokeRect = m_brush->getBoundFromPoints(m_points); - updateWorkAndBackupRasters(m_strokeRect); - m_tileSaver->save(m_strokeRect); - m_brush->addPoint(point, opacity); - m_brush->updateDrawing(ras, m_backUpRas, m_currentColor, m_strokeRect, - m_opacity.getValue().second * 0.01); - m_oldOpacity = opacity; - m_lastRect = m_strokeRect; - - invalidate(invalidateRect.enlarge(2)); + + mypaint::Brush mypaintBrush; + applyToonzBrushSettings(mypaintBrush); + m_toonz_brush = new MyPaintToonzBrush(m_workRaster, *this, mypaintBrush); + + m_strokeRect.empty(); + m_strokeSegmentRect.empty(); + m_toonz_brush->beginStroke(); + m_toonz_brush->strokeTo(point, pressure, restartBrushTimer()); + TRect updateRect = m_strokeSegmentRect*ras->getBounds(); + if (!updateRect.isEmpty()) + ras->extract(updateRect)->copy(m_workRaster->extract(updateRect)); + + TPointD thickOffset(m_maxCursorThick*0.5, m_maxCursorThick*0.5); + TRectD invalidateRect = convert(m_strokeSegmentRect) - rasCenter; + invalidateRect += TRectD(m_brushPos - thickOffset, m_brushPos + thickOffset); + invalidateRect += TRectD(previousBrushPos - thickOffset, previousBrushPos + thickOffset); + invalidate(invalidateRect.enlarge(2.0)); } //------------------------------------------------------------------------------------------------------------- void FullColorBrushTool::leftButtonDrag(const TPointD &pos, const TMouseEvent &e) { + TPointD previousBrushPos = m_brushPos; m_brushPos = m_mousePos = pos; m_mouseEvent = e; TRasterImageP ri = (TRasterImageP)getImage(true); if (!ri) return; - double maxThickness = m_thickness.getValue().second; - double thickness = m_pressure.getValue() - ? computeThickness(e.m_pressure, m_thickness) - : maxThickness; - double opacity = - (m_pressure.getValue() ? computeThickness(e.m_pressure, m_opacity) - : m_opacity.getValue().second) * - 0.01; - TDimension size = m_workRaster->getSize(); - TPointD rasCenter = TPointD(size.lx * 0.5, size.ly * 0.5); - TThickPoint point(pos + rasCenter, thickness); - - TThickPoint old = m_points.back(); - if (norm2(point - old) < 4) return; - - TThickPoint mid((old + point) * 0.5, (point.thick + old.thick) * 0.5); - m_points.push_back(mid); - m_points.push_back(point); - - TRect bbox; - int m = m_points.size(); - TRectD invalidateRect; - if (m == 3) { - // ho appena cominciato. devo disegnare un segmento - TThickPoint pa = m_points.front(); - std::vector points; - points.push_back(pa); - points.push_back(mid); - invalidateRect = ToolUtils::getBounds(points, maxThickness); - bbox = m_brush->getBoundFromPoints(points); - updateWorkAndBackupRasters(bbox + m_lastRect); - m_tileSaver->save(bbox); - m_brush->addArc(pa, (pa + mid) * 0.5, mid, m_oldOpacity, opacity); - m_lastRect += bbox; - } else { - // caso generale: disegno un arco - std::vector points; - points.push_back(m_points[m - 4]); - points.push_back(old); - points.push_back(mid); - invalidateRect = ToolUtils::getBounds(points, maxThickness); - bbox = m_brush->getBoundFromPoints(points); - updateWorkAndBackupRasters(bbox + m_lastRect); - m_tileSaver->save(bbox); - m_brush->addArc(m_points[m - 4], old, mid, m_oldOpacity, opacity); - m_lastRect += bbox; - } - m_oldOpacity = opacity; - m_brush->updateDrawing(ri->getRaster(), m_backUpRas, m_currentColor, bbox, - m_opacity.getValue().second * 0.01); - invalidate(invalidateRect.enlarge(2) - rasCenter); - m_strokeRect += bbox; + TRasterP ras = ri->getRaster(); + TPointD rasCenter = ras->getCenterD(); + TPointD point(pos + rasCenter); + double pressure = m_enabledPressure && e.isTablet() ? e.m_pressure/255.0 : 0.5; + + m_strokeSegmentRect.empty(); + m_toonz_brush->strokeTo(point, pressure, restartBrushTimer()); + TRect updateRect = m_strokeSegmentRect*ras->getBounds(); + if (!updateRect.isEmpty()) + ras->extract(updateRect)->copy(m_workRaster->extract(updateRect)); + + TPointD thickOffset(m_maxCursorThick*0.5, m_maxCursorThick*0.5); + TRectD invalidateRect = convert(m_strokeSegmentRect) - rasCenter; + invalidateRect += TRectD(m_brushPos - thickOffset, m_brushPos + thickOffset); + invalidateRect += TRectD(previousBrushPos - thickOffset, previousBrushPos + thickOffset); + invalidate(invalidateRect.enlarge(2.0)); } //--------------------------------------------------------------------------------------------------------------- void FullColorBrushTool::leftButtonUp(const TPointD &pos, const TMouseEvent &e) { + TPointD previousBrushPos = m_brushPos; m_brushPos = m_mousePos = pos; TRasterImageP ri = (TRasterImageP)getImage(true); if (!ri) return; - if (m_points.size() != 1) { - double maxThickness = m_thickness.getValue().second; - double thickness = m_pressure.getValue() - ? computeThickness(e.m_pressure, m_thickness) - : maxThickness; - double opacity = - (m_pressure.getValue() ? computeThickness(e.m_pressure, m_opacity) - : m_opacity.getValue().second) * - 0.01; - TPointD rasCenter = ri->getRaster()->getCenterD(); - TThickPoint point(pos + rasCenter, thickness); - m_points.push_back(point); - int m = m_points.size(); - std::vector points; - points.push_back(m_points[m - 3]); - points.push_back(m_points[m - 2]); - points.push_back(m_points[m - 1]); - TRect bbox = m_brush->getBoundFromPoints(points); - updateWorkAndBackupRasters(bbox); - m_tileSaver->save(bbox); - m_brush->addArc(points[0], points[1], points[2], m_oldOpacity, opacity); - m_brush->updateDrawing(ri->getRaster(), m_backUpRas, m_currentColor, bbox, - m_opacity.getValue().second * 0.01); - TRectD invalidateRect = ToolUtils::getBounds(points, maxThickness); - invalidate(invalidateRect.enlarge(2) - rasCenter); - m_strokeRect += bbox; - m_lastRect.empty(); - } - - if (m_brush) { - delete m_brush; - m_brush = 0; + TRasterP ras = ri->getRaster(); + TPointD rasCenter = ras->getCenterD(); + TPointD point(pos + rasCenter); + double pressure = m_enabledPressure && e.isTablet() ? e.m_pressure/255.0 : 0.5; + + m_strokeSegmentRect.empty(); + m_toonz_brush->strokeTo(point, pressure, restartBrushTimer()); + m_toonz_brush->endStroke(); + TRect updateRect = m_strokeSegmentRect*ras->getBounds(); + if (!updateRect.isEmpty()) + ras->extract(updateRect)->copy(m_workRaster->extract(updateRect)); + + TPointD thickOffset(m_maxCursorThick*0.5, m_maxCursorThick*0.5); + TRectD invalidateRect = convert(m_strokeSegmentRect) - rasCenter; + invalidateRect += TRectD(m_brushPos - thickOffset, m_brushPos + thickOffset); + invalidateRect += TRectD(previousBrushPos - thickOffset, previousBrushPos + thickOffset); + invalidate(invalidateRect.enlarge(2.0)); + + if (m_toonz_brush) { + delete m_toonz_brush; + m_toonz_brush = 0; } + m_lastRect.empty(); m_workRaster->unlock(); if (m_tileSet->getTileCount() > 0) { @@ -419,10 +400,10 @@ void FullColorBrushTool::leftButtonUp(const TPointD &pos, TXshLevel *level = app->getCurrentLevel()->getLevel(); TXshSimpleLevelP simLevel = level->getSimpleLevel(); TFrameId frameId = getCurrentFid(); - TRasterP ras = ri->getRaster()->extract(m_strokeRect)->clone(); + TRasterP subras = ras->extract(m_strokeRect)->clone(); TUndoManager::manager()->add( new FullColorBrushUndo(m_tileSet, simLevel.getPointer(), frameId, - m_isFrameCreated, ras, m_strokeRect.getP00())); + m_isFrameCreated, subras, m_strokeRect.getP00())); } notifyImageChanged(); @@ -497,41 +478,54 @@ void FullColorBrushTool::draw() { if (TRasterImageP ri = TRasterImageP(getImage(false))) { TRasterP ras = ri->getRaster(); - glColor3d(1.0, 0.0, 0.0); + double alpha = 1.0; + double alphaRadius = 3.0; + double pixelSize = sqrt(tglGetPixelSize2()); + + // circles with lesser radius looks more bold + // to avoid these effect we'll reduce alpha for small radiuses + double minX = m_minCursorThick/(alphaRadius*pixelSize); + double maxX = m_maxCursorThick/(alphaRadius*pixelSize); + double minAlpha = alpha*(1.0 - 1.0/(1.0 + minX)); + double maxAlpha = alpha*(1.0 - 1.0/(1.0 + maxX)); + + glPushAttrib(GL_ALL_ATTRIB_BITS); + tglEnableBlending(); + tglEnableLineSmooth(true, 0.5); + + if (m_minCursorThick < m_maxCursorThick - pixelSize) { + glColor4d(1.0, 1.0, 1.0, minAlpha); + tglDrawCircle(m_brushPos, (m_minCursorThick + 1)*0.5 - pixelSize); + glColor4d(0.0, 0.0, 0.0, minAlpha); + tglDrawCircle(m_brushPos, (m_minCursorThick + 1)*0.5); + } + + glColor4d(1.0, 1.0, 1.0, maxAlpha); + tglDrawCircle(m_brushPos, (m_maxCursorThick + 1)*0.5 - pixelSize); + glColor4d(0.0, 0.0, 0.0, maxAlpha); + tglDrawCircle(m_brushPos, (m_maxCursorThick + 1)*0.5); - tglDrawCircle(m_brushPos, (m_minThick + 1) * 0.5); - tglDrawCircle(m_brushPos, (m_maxThick + 1) * 0.5); + glPopAttrib(); } } //-------------------------------------------------------------------------------------------------------------- void FullColorBrushTool::onEnter() { - TImageP img = getImage(false); - TRasterImageP ri(img); - if (ri) { - m_minThick = m_thickness.getValue().first; - m_maxThick = m_thickness.getValue().second; - } else { - m_minThick = 0; - m_maxThick = 0; - } - - updateCurrentColor(); + updateCurrentStyle(); } //---------------------------------------------------------------------------------------------------------- void FullColorBrushTool::onLeave() { - m_minThick = 0; - m_maxThick = 0; + m_minCursorThick = 0; + m_maxCursorThick = 0; } //---------------------------------------------------------------------------------------------------------- TPropertyGroup *FullColorBrushTool::getProperties(int targetType) { if (!m_presetsLoaded) initPresets(); - return &m_prop; } @@ -564,24 +558,16 @@ void FullColorBrushTool::setWorkAndBackupImages() { //------------------------------------------------------------------ bool FullColorBrushTool::onPropertyChanged(std::string propertyName) { - m_minThick = m_thickness.getValue().first; - m_maxThick = m_thickness.getValue().second; - if (propertyName == "Hardness:" || propertyName == "Thickness" || - propertyName == "Size") { - m_brushPad = ToolUtils::getBrushPad(m_thickness.getValue().second, - m_hardness.getValue() * 0.01); - TRectD rect(m_brushPos - TPointD(m_maxThick + 2, m_maxThick + 2), - m_brushPos + TPointD(m_maxThick + 2, m_maxThick + 2)); - invalidate(rect); - } - /*if(propertyName == "Hardness:" || propertyName == "Opacity:") -setWorkAndBackupImages();*/ - FullcolorBrushMinSize = m_minThick; - FullcolorBrushMaxSize = m_maxThick; + FullcolorBrushMinSize = m_thickness.getValue().first; + FullcolorBrushMaxSize = m_thickness.getValue().second; FullcolorPressureSensitivity = m_pressure.getValue(); FullcolorBrushHardness = m_hardness.getValue(); FullcolorMinOpacity = m_opacity.getValue().first; FullcolorMaxOpacity = m_opacity.getValue().second; + FullcolorModifierSize = m_modifierSize.getValue(); + FullcolorModifierOpacity = m_modifierOpacity.getValue(); + + updateCurrentStyle(); if (propertyName == "Preset:") { loadPreset(); @@ -631,11 +617,12 @@ void FullColorBrushTool::loadPreset() { { m_thickness.setValue( TIntPairProperty::Value(std::max((int)preset.m_min, 1), preset.m_max)); - m_brushPad = ToolUtils::getBrushPad(preset.m_max, preset.m_hardness * 0.01); m_hardness.setValue(preset.m_hardness, true); m_opacity.setValue( TDoublePairProperty::Value(preset.m_opacityMin, preset.m_opacityMax)); m_pressure.setValue(preset.m_pressure); + m_modifierSize.setValue(preset.m_modifierSize); + m_modifierOpacity.setValue(preset.m_modifierOpacity); } catch (...) { } } @@ -646,12 +633,14 @@ void FullColorBrushTool::addPreset(QString name) { // Build the preset BrushData preset(name.toStdWString()); - preset.m_min = m_thickness.getValue().first; - preset.m_max = m_thickness.getValue().second; - preset.m_hardness = m_hardness.getValue(); - preset.m_opacityMin = m_opacity.getValue().first; - preset.m_opacityMax = m_opacity.getValue().second; - preset.m_pressure = m_pressure.getValue(); + preset.m_min = m_thickness.getValue().first; + preset.m_max = m_thickness.getValue().second; + preset.m_hardness = m_hardness.getValue(); + preset.m_opacityMin = m_opacity.getValue().first; + preset.m_opacityMax = m_opacity.getValue().second; + preset.m_pressure = m_pressure.getValue(); + preset.m_modifierSize = m_modifierSize.getValue(); + preset.m_modifierOpacity = m_modifierOpacity.getValue(); // Pass the preset to the manager m_presetsManager.addPreset(preset); @@ -678,32 +667,209 @@ void FullColorBrushTool::removePreset() { //------------------------------------------------------------------ -void FullColorBrushTool::updateCurrentColor() { - TTool::Application *app = getApplication(); - if (app->getCurrentObject()->isSpline()) { - m_currentColor = TPixel32::Red; - return; +void FullColorBrushTool::updateCurrentStyle() { + m_currentColor = TPixel32::Black; + if (TTool::Application *app = getApplication()) { + if (app->getCurrentObject()->isSpline()) { + m_currentColor = TPixel32::Red; + } else + if (TPalette *plt = app->getCurrentPalette()->getPalette()) { + int style = app->getCurrentLevelStyleIndex(); + TColorStyle *colorStyle = plt->getStyle(style); + m_currentColor = colorStyle->getMainColor(); + } } - TPalette *plt = app->getCurrentPalette()->getPalette(); - if (!plt) return; - int style = app->getCurrentLevelStyleIndex(); - TColorStyle *colorStyle = plt->getStyle(style); - m_currentColor = colorStyle->getMainColor(); + int prevMinCursorThick = m_minCursorThick; + int prevMaxCursorThick = m_maxCursorThick; + + m_enabledPressure = m_pressure.getValue(); + if (TMyPaintBrushStyle *brushStyle = getBrushStyle()) { + double radiusLog = brushStyle->getBrush().getBaseValue(MYPAINT_BRUSH_SETTING_RADIUS_LOGARITHMIC) + + m_modifierSize.getValue()*log(2.0); + double radius = exp(radiusLog); + m_minCursorThick = m_maxCursorThick = (int)round(2.0*radius); + } else { + m_minCursorThick = std::max(m_thickness.getValue().first, 1); + m_maxCursorThick = std::max(m_thickness.getValue().second, m_minCursorThick); + if (!m_enabledPressure) { + double minRadiusLog = log(0.5*m_minCursorThick); + double maxRadiusLog = log(0.5*m_maxCursorThick); + double avgRadiusLog = 0.5*(minRadiusLog + maxRadiusLog); + double avgRadius = exp(avgRadiusLog); + m_minCursorThick = m_maxCursorThick = (int)round(2.0*avgRadius); + } + } + + if (m_minCursorThick != prevMinCursorThick || m_maxCursorThick != prevMaxCursorThick) { + TRectD rect(m_brushPos - TPointD(m_maxCursorThick + 2, m_maxCursorThick + 2), + m_brushPos + TPointD(m_maxCursorThick + 2, m_maxCursorThick + 2)); + invalidate(rect); + } +} + +//------------------------------------------------------------------ + +double FullColorBrushTool::restartBrushTimer() { + double dtime = m_brushTimer.nsecsElapsed()*1e-9; + m_brushTimer.restart(); + return dtime; +} + +//------------------------------------------------------------------ + +TMyPaintBrushStyle* FullColorBrushTool::getBrushStyle() { + if (TTool::Application *app = getApplication()) + return dynamic_cast( app->getCurrentLevelStyle() ); + return 0; } +//------------------------------------------------------------------ + +void FullColorBrushTool::applyClassicToonzBrushSettings(mypaint::Brush &mypaintBrush) { + const double precision = 1e-5; + const double hardnessOpacity = 0.1; + + double minThickness = 0.5*m_thickness.getValue().first; + double maxThickness = 0.5*m_thickness.getValue().second; + double minOpacity = 0.01*m_opacity.getValue().first; + double maxOpacity = 0.01*m_opacity.getValue().second; + double hardness = 0.01*m_hardness.getValue(); + + TPixelD color = PixelConverter::from(m_currentColor); + double colorH = 0.0; + double colorS = 0.0; + double colorV = 0.0; + RGB2HSV(color.r, color.g, color.b, &colorH, &colorS, &colorV); + + // avoid log(0) + if (minThickness < precision) + minThickness = precision; + if (maxThickness < precision) + maxThickness = precision; + + // tune hardness opacity for better visual softness + hardness *= hardness; + double opacityAmplifier = 1.0 - hardnessOpacity + hardness*hardnessOpacity; + minOpacity *= opacityAmplifier; + maxOpacity *= opacityAmplifier; + + // reset + mypaintBrush.fromDefaults(); + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_OPAQUE_MULTIPLY, 1.0); + mypaintBrush.setMappingN( + MYPAINT_BRUSH_SETTING_OPAQUE_MULTIPLY, + MYPAINT_BRUSH_INPUT_PRESSURE, + 0 ); + + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_HARDNESS, 0.5*hardness + 0.5); + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_COLOR_H, colorH/360.0); + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_COLOR_S, colorS); + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_COLOR_V, colorV); + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_DABS_PER_ACTUAL_RADIUS, 5.0 + hardness*10.0); + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_DABS_PER_BASIC_RADIUS, 0.0); + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_DABS_PER_SECOND, 0.0); + + // thickness may be dynamic + if (minThickness + precision >= maxThickness) { + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_RADIUS_LOGARITHMIC, log(maxThickness)); + mypaintBrush.setMappingN( + MYPAINT_BRUSH_SETTING_RADIUS_LOGARITHMIC, + MYPAINT_BRUSH_INPUT_PRESSURE, + 0 ); + } else { + double minThicknessLog = log(minThickness); + double maxThicknessLog = log(maxThickness); + double baseThicknessLog = 0.5*(minThicknessLog + maxThicknessLog); + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_RADIUS_LOGARITHMIC, baseThicknessLog); + mypaintBrush.setMappingN( + MYPAINT_BRUSH_SETTING_RADIUS_LOGARITHMIC, + MYPAINT_BRUSH_INPUT_PRESSURE, + 2 ); + mypaintBrush.setMappingPoint( + MYPAINT_BRUSH_SETTING_RADIUS_LOGARITHMIC, + MYPAINT_BRUSH_INPUT_PRESSURE, + 0, 0.0, minThicknessLog - baseThicknessLog); + mypaintBrush.setMappingPoint( + MYPAINT_BRUSH_SETTING_RADIUS_LOGARITHMIC, + MYPAINT_BRUSH_INPUT_PRESSURE, + 1, 1.0, maxThicknessLog - baseThicknessLog); + } + + // opacity may be dynamic + if (minOpacity + precision >= maxOpacity) { + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_OPAQUE, maxOpacity); + mypaintBrush.setMappingN( + MYPAINT_BRUSH_SETTING_OPAQUE, + MYPAINT_BRUSH_INPUT_PRESSURE, + 0 ); + } else { + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_OPAQUE, minOpacity); + mypaintBrush.setMappingN( + MYPAINT_BRUSH_SETTING_OPAQUE, + MYPAINT_BRUSH_INPUT_PRESSURE, + 2 ); + mypaintBrush.setMappingPoint( + MYPAINT_BRUSH_SETTING_OPAQUE, + MYPAINT_BRUSH_INPUT_PRESSURE, + 0, 0.0, 0.0); + mypaintBrush.setMappingPoint( + MYPAINT_BRUSH_SETTING_OPAQUE, + MYPAINT_BRUSH_INPUT_PRESSURE, + 1, 1.0, maxOpacity - minOpacity); + } +} + +void FullColorBrushTool::applyToonzBrushSettings(mypaint::Brush &mypaintBrush) { + TMyPaintBrushStyle *mypaintStyle = getBrushStyle(); + + if (mypaintStyle) { + const double precision = 1e-5; + + double modifierSize = m_modifierSize.getValue()*log(2.0); + double modifierOpacity = 0.01*m_modifierOpacity.getValue(); + + TPixelD color = PixelConverter::from(m_currentColor); + double colorH = 0.0; + double colorS = 0.0; + double colorV = 0.0; + RGB2HSV(color.r, color.g, color.b, &colorH, &colorS, &colorV); + + mypaintBrush.fromBrush(mypaintStyle->getBrush()); + + float baseSize = mypaintBrush.getBaseValue(MYPAINT_BRUSH_SETTING_RADIUS_LOGARITHMIC); + float baseOpacity = mypaintBrush.getBaseValue(MYPAINT_BRUSH_SETTING_OPAQUE); + + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_RADIUS_LOGARITHMIC, baseSize + modifierSize); + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_OPAQUE, baseOpacity*modifierOpacity); + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_COLOR_H, colorH/360.0); + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_COLOR_S, colorS); + mypaintBrush.setBaseValue(MYPAINT_BRUSH_SETTING_COLOR_V, colorV); + } else { + applyClassicToonzBrushSettings(mypaintBrush); + } +} + + //========================================================================================================== FullColorBrushToolNotifier::FullColorBrushToolNotifier(FullColorBrushTool *tool) : m_tool(tool) { - TTool::Application *app = m_tool->getApplication(); - TXshLevelHandle *levelHandle; - if (app) levelHandle = app->getCurrentLevel(); - bool ret = false; - if (levelHandle) { - bool ret = connect(levelHandle, SIGNAL(xshCanvasSizeChanged()), this, - SLOT(onCanvasSizeChanged())); - assert(ret); + if (TTool::Application *app = m_tool->getApplication()) { + if (TXshLevelHandle *levelHandle = app->getCurrentLevel()) { + bool ret = connect(levelHandle, SIGNAL(xshCanvasSizeChanged()), this, + SLOT(onCanvasSizeChanged())); + assert(ret); + } + if (TPaletteHandle *paletteHandle = app->getCurrentPalette()) { + bool ret; + ret = connect(paletteHandle, SIGNAL(colorStyleChanged()), this, + SLOT(onColorStyleChanged())); + assert(ret); + ret = connect(paletteHandle, SIGNAL(colorStyleSwitched()), this, + SLOT(onColorStyleChanged())); + assert(ret); + } } } diff --git a/toonz/sources/tnztools/fullcolorbrushtool.h b/toonz/sources/tnztools/fullcolorbrushtool.h index 9175652..d4bf729 100644 --- a/toonz/sources/tnztools/fullcolorbrushtool.h +++ b/toonz/sources/tnztools/fullcolorbrushtool.h @@ -3,7 +3,12 @@ #ifndef FULLCOLORBRUSHTOOL_H #define FULLCOLORBRUSHTOOL_H +#include + #include "brushtool.h" +#include "mypainttoonzbrush.h" +#include "toonz/mypaintbrushstyle.h" +#include //============================================================== @@ -11,8 +16,9 @@ class TTileSetFullColor; class TTileSaverFullColor; -class BluredBrush; +class MyPaintToonzBrush; class FullColorBrushToolNotifier; +namespace mypaint { class Brush; } //============================================================== @@ -20,10 +26,13 @@ class FullColorBrushToolNotifier; // FullColor Brush Tool declaration //************************************************************************ -class FullColorBrushTool final : public TTool { +class FullColorBrushTool final : public TTool, public RasterController { Q_DECLARE_TR_FUNCTIONS(FullColorBrushTool) - void updateCurrentColor(); + void updateCurrentStyle(); + double restartBrushTimer(); + void applyClassicToonzBrushSettings(mypaint::Brush &mypaintBrush); + void applyToonzBrushSettings(mypaint::Brush &mypaintBrush); public: FullColorBrushTool(std::string name); @@ -37,6 +46,9 @@ public: void onActivate() override; void onDeactivate() override; + bool askRead(const TRect &rect) override; + bool askWrite(const TRect &rect) override; + bool preLeftButtonDown() override; void leftButtonDown(const TPointD &pos, const TMouseEvent &e) override; void leftButtonDrag(const TPointD &pos, const TMouseEvent &e) override; @@ -63,6 +75,9 @@ public: void removePreset(); void onCanvasSizeChanged(); + void onColorStyleChanged(); + + TMyPaintBrushStyle* getBrushStyle(); protected: TPropertyGroup m_prop; @@ -71,26 +86,24 @@ protected: TBoolProperty m_pressure; TDoublePairProperty m_opacity; TDoubleProperty m_hardness; + TDoubleProperty m_modifierSize; + TDoubleProperty m_modifierOpacity; TEnumProperty m_preset; TPixel32 m_currentColor; - int m_styleId, m_minThick, m_maxThick; + bool m_enabledPressure; + int m_minCursorThick, m_maxCursorThick; - double m_oldOpacity; - - TPointD m_dpiScale, - m_mousePos, //!< Current mouse position, in world coordinates. - m_brushPos; //!< World position the brush will be painted at. + TPointD m_mousePos, //!< Current mouse position, in world coordinates. + m_brushPos; //!< World position the brush will be painted at. TRasterP m_backUpRas; TRaster32P m_workRaster; - TRect m_strokeRect, m_lastRect; - - QRadialGradient m_brushPad; + TRect m_strokeRect, m_strokeSegmentRect, m_lastRect; - std::vector m_points; - BluredBrush *m_brush; + MyPaintToonzBrush *m_toonz_brush; + QElapsedTimer m_brushTimer; TTileSetFullColor *m_tileSet; TTileSaverFullColor *m_tileSaver; @@ -116,8 +129,8 @@ public: FullColorBrushToolNotifier(FullColorBrushTool *tool); protected slots: - void onCanvasSizeChanged() { m_tool->onCanvasSizeChanged(); } + void onColorStyleChanged() { m_tool->onColorStyleChanged(); } }; #endif // FULLCOLORBRUSHTOOL_H diff --git a/toonz/sources/tnztools/mypainttoonzbrush.cpp b/toonz/sources/tnztools/mypainttoonzbrush.cpp new file mode 100644 index 0000000..f6e722b --- /dev/null +++ b/toonz/sources/tnztools/mypainttoonzbrush.cpp @@ -0,0 +1,165 @@ + +#include + +#include "mypainttoonzbrush.h" +#include "tropcm.h" +#include "tpixelutils.h" +#include + +#include + + +//======================================================= +// +// Raster32PMyPaintSurface::Internal +// +//======================================================= + +class Raster32PMyPaintSurface::Internal: + public mypaint::helpers::SurfaceCustom +{ +public: + typedef SurfaceCustom Parent; + Internal(Raster32PMyPaintSurface &owner): + SurfaceCustom( owner.m_ras->pixels(), + owner.m_ras->getLx(), + owner.m_ras->getLy(), + owner.m_ras->getPixelSize(), + owner.m_ras->getRowSize(), + &owner ) + { } +}; + +//======================================================= +// +// Raster32PMyPaintSurface +// +//======================================================= + +Raster32PMyPaintSurface::Raster32PMyPaintSurface(const TRaster32P &ras): + m_ras(ras), + controller(), + internal() +{ + assert(ras); + internal = new Internal(*this); +} + +Raster32PMyPaintSurface::Raster32PMyPaintSurface(const TRaster32P &ras, RasterController &controller): + m_ras(ras), + controller(&controller), + internal() +{ + assert(ras); + internal = new Internal(*this); +} + +Raster32PMyPaintSurface::~Raster32PMyPaintSurface() + { delete internal; } + +bool Raster32PMyPaintSurface::getColor(float x, float y, float radius, + float &colorR, float &colorG, float &colorB, float &colorA) +{ return internal->getColor(x, y, radius, colorR, colorG, colorB, colorA); } + +bool Raster32PMyPaintSurface::drawDab(const mypaint::Dab &dab) + { return internal->drawDab(dab); } + +bool Raster32PMyPaintSurface::getAntialiasing() const + { return internal->antialiasing; } + +void Raster32PMyPaintSurface::setAntialiasing(bool value) + { internal->antialiasing = value; } + +//======================================================= +// +// MyPaintToonzBrush +// +//======================================================= + +MyPaintToonzBrush::MyPaintToonzBrush(const TRaster32P &ras, RasterController &controller, const mypaint::Brush &brush): + m_ras(ras), + m_mypaintSurface(m_ras, controller), + brush(brush), + reset(true) +{ + // read brush antialiasing settings + float aa = this->brush.getBaseValue(MYPAINT_BRUSH_SETTING_ANTI_ALIASING); + m_mypaintSurface.setAntialiasing(aa > 0.5f); + + // reset brush antialiasing to zero to avoid radius and hardness correction + this->brush.setBaseValue(MYPAINT_BRUSH_SETTING_ANTI_ALIASING, 0.f); + for(int i = 0; i < MYPAINT_BRUSH_INPUTS_COUNT; ++i) + this->brush.setMappingN(MYPAINT_BRUSH_SETTING_ANTI_ALIASING, (MyPaintBrushInput)i, 0); +} + +void MyPaintToonzBrush::beginStroke() { + brush.reset(); + brush.newStroke(); + reset = true; +} + +void MyPaintToonzBrush::endStroke() { + if (!reset) { + strokeTo(TPointD(current.x, current.y), current.pressure, 0.f); + beginStroke(); + } +} + +void MyPaintToonzBrush::strokeTo(const TPointD &point, double pressure, double dtime) { + Params next(point.x, point.y, pressure, 0.0); + + if (reset) { + current = next; + previous = current; + reset = false; + // we need to jump to initial point (heuristic) + brush.setState(MYPAINT_BRUSH_STATE_X, current.x); + brush.setState(MYPAINT_BRUSH_STATE_Y, current.y); + brush.setState(MYPAINT_BRUSH_STATE_ACTUAL_X, current.x); + brush.setState(MYPAINT_BRUSH_STATE_ACTUAL_Y, current.y); + return; + } else { + next.time = current.time + dtime; + } + + // accuracy + const double threshold = 1.0; + const double thresholdSqr = threshold*threshold; + const int maxLevel = 16; + + // set initial segment + Segment stack[maxLevel+1]; + Params p0; + Segment *segment = stack; + Segment *maxSegment = segment + maxLevel; + p0.setMedian(previous, current); + segment->p1 = current; + segment->p2.setMedian(current, next); + + // process + while(true) { + double dx = segment->p2.x - p0.x; + double dy = segment->p2.y - p0.y; + if (dx*dx + dy*dy > thresholdSqr && segment != maxSegment) { + Segment *sub = segment + 1; + sub->p1.setMedian(p0, segment->p1); + segment->p1.setMedian(segment->p1, segment->p2); + sub->p2.setMedian(sub->p1, segment->p1); + segment = sub; + } else { + brush.strokeTo(m_mypaintSurface, segment->p2.x, segment->p2.y, segment->p2.pressure, 0.f, 0.f, segment->p2.time - p0.time); + if (segment == stack) break; + p0 = segment->p2; + --segment; + } + } + + // keep parameters for future interpolation + previous = current; + current = next; + + // shift time + previous.time = 0.0; + current.time = dtime; +} + diff --git a/toonz/sources/tnztools/mypainttoonzbrush.h b/toonz/sources/tnztools/mypainttoonzbrush.h new file mode 100644 index 0000000..898fe2c --- /dev/null +++ b/toonz/sources/tnztools/mypainttoonzbrush.h @@ -0,0 +1,116 @@ +#pragma once + +#ifndef MYPAINTTOONZBRUSH_H +#define MYPAINTTOONZBRUSH_H + +#include +#include "traster.h" +#include "trastercm.h" +#include "tcurves.h" +#include +#include + + +class RasterController { +public: + virtual ~RasterController() { } + virtual bool askRead(const TRect &rect) { return true; } + virtual bool askWrite(const TRect &rect) { return true; } +}; + +//======================================================= +// +// Raster32PMyPaintSurface +// +//======================================================= + +class Raster32PMyPaintSurface: public mypaint::Surface { +private: + class Internal; + + TRaster32P m_ras; + RasterController *controller; + Internal *internal; + + inline static void readPixel(const void *pixelPtr, float &colorR, float &colorG, float &colorB, float &colorA) { + const TPixel32 &pixel = *(const TPixel32*)pixelPtr; + colorR = (float)pixel.r/(float)TPixel32::maxChannelValue; + colorG = (float)pixel.g/(float)TPixel32::maxChannelValue; + colorB = (float)pixel.b/(float)TPixel32::maxChannelValue; + colorA = (float)pixel.m/(float)TPixel32::maxChannelValue; + } + + inline static void writePixel(void *pixelPtr, float colorR, float colorG, float colorB, float colorA) { + TPixel32 &pixel = *(TPixel32*)pixelPtr; + pixel.r = (TPixel32::Channel)roundf(colorR * TPixel32::maxChannelValue); + pixel.g = (TPixel32::Channel)roundf(colorG * TPixel32::maxChannelValue); + pixel.b = (TPixel32::Channel)roundf(colorB * TPixel32::maxChannelValue); + pixel.m = (TPixel32::Channel)roundf(colorA * TPixel32::maxChannelValue); + } + + inline static bool askRead(void *surfaceController, const void* /* surfacePointer */, int x0, int y0, int x1, int y1) { + Raster32PMyPaintSurface &owner = *((Raster32PMyPaintSurface*)surfaceController); + return !owner.controller || owner.controller->askRead(TRect(x0, y0, x1, y1)); + } + + inline static bool askWrite(void *surfaceController, const void* /* surfacePointer */, int x0, int y0, int x1, int y1) { + Raster32PMyPaintSurface &owner = *((Raster32PMyPaintSurface*)surfaceController); + return !owner.controller || owner.controller->askWrite(TRect(x0, y0, x1, y1)); + } + +public: + explicit Raster32PMyPaintSurface(const TRaster32P &ras); + explicit Raster32PMyPaintSurface(const TRaster32P &ras, RasterController &controller); + ~Raster32PMyPaintSurface(); + + bool getColor(float x, float y, float radius, + float &colorR, float &colorG, float &colorB, float &colorA) override; + + bool drawDab(const mypaint::Dab &dab) override; + + bool getAntialiasing() const; + void setAntialiasing(bool value); +}; + +//======================================================= +// +// MyPaintToonzBrush +// +//======================================================= + +class MyPaintToonzBrush { +private: + struct Params { + union { + struct { double x, y, pressure, time; }; + struct { double values[4]; }; + }; + + inline explicit Params(double x = 0.0, double y = 0.0, double pressure = 0.0, double time = 0.0): + x(x), y(y), pressure(pressure), time(time) { } + + inline void setMedian(Params &a, Params &b) { + for(int i = 0; i < (int)sizeof(values)/sizeof(values[0]); ++i) + values[i] = 0.5*(a.values[i] + b.values[i]); + } + }; + + struct Segment { + Params p1, p2; + }; + + TRaster32P m_ras; + Raster32PMyPaintSurface m_mypaintSurface; + mypaint::Brush brush; + + bool reset; + Params previous, current; + +public: + MyPaintToonzBrush(const TRaster32P &ras, RasterController &controller, const mypaint::Brush &brush); + void beginStroke(); + void endStroke(); + void strokeTo(const TPointD &p, double pressure, double dtime); +}; + +#endif // T_BLUREDBRUSH diff --git a/toonz/sources/tnztools/tooloptions.cpp b/toonz/sources/tnztools/tooloptions.cpp index 5bb6d7a..00f872d 100644 --- a/toonz/sources/tnztools/tooloptions.cpp +++ b/toonz/sources/tnztools/tooloptions.cpp @@ -31,10 +31,12 @@ #include "toonz/txsheethandle.h" #include "toonz/tstageobjectspline.h" #include "toonz/tframehandle.h" +#include "toonz/tpalettehandle.h" #include "toonz/palettecontroller.h" #include "toonz/txshlevelhandle.h" #include "toonz/preferences.h" #include "toonz/tstageobjecttree.h" +#include "toonz/mypaintbrushstyle.h" // TnzCore includes #include "tproperty.h" @@ -340,9 +342,10 @@ void ToolOptionControlBuilder::visit(TEnumProperty *p) { case COMBOBOX: default: { - QLabel *label = addLabel(p); - m_panel->addLabel(p->getName(), label); - + if (p->getQStringName() != "") { + QLabel *label = addLabel(p); + m_panel->addLabel(p->getName(), label); + } ToolOptionCombo *obj = new ToolOptionCombo(m_tool, p, m_toolHandle); control = obj; widget = obj; @@ -1568,6 +1571,8 @@ BrushToolOptionsBox::BrushToolOptionsBox(QWidget *parent, TTool *tool, , m_pencilMode(0) , m_hardnessLabel(0) , m_joinStyleCombo(0) + , m_snapCheckbox(0) + , m_snapSensitivityCombo(0) , m_miterField(0) { TPropertyGroup *props = tool->getProperties(0); assert(props->getPropertyCount() > 0); @@ -1613,7 +1618,10 @@ BrushToolOptionsBox::BrushToolOptionsBox(QWidget *parent, TTool *tool, addSeparator(); if (tool && tool->getProperties(1)) tool->getProperties(1)->accept(builder); - + m_snapCheckbox = + dynamic_cast(m_controls.value("Snap")); + m_snapSensitivityCombo = + dynamic_cast(m_controls.value("Sensitivity:")); m_joinStyleCombo = dynamic_cast(m_controls.value("Join")); m_miterField = @@ -1622,11 +1630,45 @@ BrushToolOptionsBox::BrushToolOptionsBox(QWidget *parent, TTool *tool, TStroke::OutlineOptions::MITER_JOIN); } hLayout()->addStretch(1); + filterControls(); +} + +//----------------------------------------------------------------------------- + +void BrushToolOptionsBox::filterControls() { + // show or hide widgets which modify imported brush (mypaint) + + bool showModifiers = false; + if (FullColorBrushTool *fullColorBrushTool = + dynamic_cast(m_tool)) + showModifiers = fullColorBrushTool->getBrushStyle(); + + for (QMap::iterator it = m_labels.begin(); + it != m_labels.end(); it++) { + bool isModifier = (it.key().substr(0, 8) == "Modifier"); + bool isCommon = (it.key() == "Pressure" || it.key() == "Preset:"); + bool visible = isCommon || (isModifier == showModifiers); + it.value()->setVisible(visible); + } + + for (QMap::iterator it = m_controls.begin(); + it != m_controls.end(); it++) { + bool isModifier = (it.key().substr(0, 8) == "Modifier"); + bool isCommon = (it.key() == "Pressure" || it.key() == "Preset:"); + bool visible = isCommon || (isModifier == showModifiers); + if (QWidget *widget = dynamic_cast(it.value())) + widget->setVisible(visible); + } + if (m_tool->getTargetType() & TTool::Vectors) { + m_snapSensitivityCombo->setHidden(!m_snapCheckbox->isChecked()); + } } //----------------------------------------------------------------------------- void BrushToolOptionsBox::updateStatus() { + filterControls(); + QMap::iterator it; for (it = m_controls.begin(); it != m_controls.end(); it++) it.value()->updateStatus(); @@ -1634,6 +1676,8 @@ void BrushToolOptionsBox::updateStatus() { if (m_miterField) m_miterField->setEnabled(m_joinStyleCombo->currentIndex() == TStroke::OutlineOptions::MITER_JOIN); + if (m_snapCheckbox) + m_snapSensitivityCombo->setHidden(!m_snapCheckbox->isChecked()); } //----------------------------------------------------------------------------- diff --git a/toonz/sources/toonz/CMakeLists.txt b/toonz/sources/toonz/CMakeLists.txt index 8829c07..8818d87 100644 --- a/toonz/sources/toonz/CMakeLists.txt +++ b/toonz/sources/toonz/CMakeLists.txt @@ -149,6 +149,7 @@ set(MOC_HEADERS penciltestpopup.h locatorpopup.h styleshortcutswitchablepanel.h + cameracapturelevelcontrol.h # Tracker file dummyprocessor.h metnum.h @@ -313,6 +314,7 @@ set(SOURCES audiorecordingpopup.cpp locatorpopup.cpp styleshortcutswitchablepanel.cpp + cameracapturelevelcontrol.cpp # Tracker file dummyprocessor.cpp metnum.cpp @@ -407,7 +409,7 @@ elseif(BUILD_ENV_APPLE) target_link_libraries(OpenToonz_${VERSION} Qt5::Core Qt5::Gui Qt5::Network Qt5::OpenGL Qt5::Svg Qt5::Xml - Qt5::Script Qt5::Widgets Qt5::PrintSupport Qt5::Multimedia + Qt5::Script Qt5::Widgets Qt5::PrintSupport Qt5::Multimedia Qt5::MultimediaWidgets ${GL_LIB} ${GLUT_LIB} ${COCOA_LIB} ${EXTRA_LIBS} mousedragfilter ) diff --git a/toonz/sources/toonz/Resources/no_mypaintbrush.png b/toonz/sources/toonz/Resources/no_mypaintbrush.png new file mode 100644 index 0000000..b6f2963 Binary files /dev/null and b/toonz/sources/toonz/Resources/no_mypaintbrush.png differ diff --git a/toonz/sources/toonz/cameracapturelevelcontrol.cpp b/toonz/sources/toonz/cameracapturelevelcontrol.cpp new file mode 100644 index 0000000..c138596 --- /dev/null +++ b/toonz/sources/toonz/cameracapturelevelcontrol.cpp @@ -0,0 +1,369 @@ +#include "cameracapturelevelcontrol.h" + +#include "toonzqt/intfield.h" +#include "toonzqt/doublefield.h" + +#include +#include +#include +#include +#include +#include + +using namespace DVGui; + +namespace { +const int HISTOGRAM_HEIGHT = 50; +const int SIDE_MARGIN = 7; +static bool histogramObtained = false; + +// returns the horizontal position of gamma slider (0-255) +int gammaToHPos(float gamma, int black, int white) { + float ratio = std::pow(0.5f, gamma); + return black + (int)std::round((float)(white - black) * ratio); +} + +// returns the gamma value from the slider position +float hPosToGamma(int hPos, int black, int white) { + if (hPos <= black + 1) + return 9.99f; + else if (hPos >= white - 1) + return 0.01f; + + float ratio = (float)(hPos - black) / (float)(white - black); + + float gamma = std::log(ratio) / std::log(0.5); + int decimals = 2; + gamma = + std::round(gamma * std::pow(10.0, decimals)) / std::pow(10.0, decimals); + return gamma; +} + +void drawSliderHandle(QPoint pos, QPainter& p, QColor color, bool selected) { + p.setPen((selected) ? Qt::yellow : Qt::black); + p.setBrush(color); + + p.translate(pos); + + static const QPoint points[5] = {QPoint(0, 0), QPoint(-6, 8), QPoint(-3, 12), + QPoint(3, 12), QPoint(6, 8)}; + p.drawConvexPolygon(points, 5); + p.resetTransform(); +} +}; +//----------------------------------------------------------------------------- + +CameraCaptureLevelHistogram::CameraCaptureLevelHistogram(QWidget* parent) + : QFrame(parent) + , m_histogramCue(false) + , m_currentItem(None) + , m_black(0) + , m_white(255) + , m_gamma(1.0) + , m_threshold(128) + , m_offset(0) + , m_mode(Color_GrayScale) + , m_histogramData(256) { + setFixedSize(256 + SIDE_MARGIN * 2, HISTOGRAM_HEIGHT + 15); + setMouseTracking(true); + + m_histogramData.fill(0); +} + +//----------------------------------------------------------------------------- + +void CameraCaptureLevelHistogram::updateHistogram(QImage& image) { + // obtain histogram only when clicked + if (!m_histogramCue) return; + + QVector tmpHisto(256); + tmpHisto.fill(0); + for (int y = 0; y < image.height(); y++) { + QRgb* rgb_p = (QRgb*)(image.scanLine(y)); + for (int x = 0; x < image.width(); x++, rgb_p++) { + tmpHisto[qGray(*rgb_p)]++; + } + } + // obtain max value and normalize + int max = 0; + for (int c = 0; c < 256; c++) { + if (tmpHisto.at(c) > max) max = tmpHisto.at(c); + } + for (int c = 0; c < 256; c++) { + m_histogramData[c] = tmpHisto.at(c) * HISTOGRAM_HEIGHT / max; + } + histogramObtained = true; + update(); + m_histogramCue = false; +} + +//----------------------------------------------------------------------------- + +void CameraCaptureLevelHistogram::paintEvent(QPaintEvent* event) { + QPainter p(this); + + QRect histoRect(SIDE_MARGIN, 1, 256, HISTOGRAM_HEIGHT); + + // draw histogram + p.setPen(Qt::black); + p.setBrush((m_currentItem == Histogram) ? Qt::darkGray : QColor(32, 32, 32)); + p.drawRect(histoRect.adjusted(-1, -1, 0, 0)); + + if (histogramObtained) { + p.setPen(Qt::white); + for (int c = 0; c < 256; c++) { + if (m_histogramData.at(c) == 0) continue; + p.drawLine(histoRect.bottomLeft() + QPoint(c, 0), + histoRect.bottomLeft() + QPoint(c, -m_histogramData.at(c))); + } + } + if (!histogramObtained || m_currentItem == Histogram) { + p.setPen(Qt::white); + p.drawText(histoRect, Qt::AlignCenter, tr("Click to Update Histogram")); + } + + p.setRenderHint(QPainter::Antialiasing); + // draw slider handles + QPoint sliderBasePos(SIDE_MARGIN, HISTOGRAM_HEIGHT + 2); + if (m_mode == Color_GrayScale) { + // black + drawSliderHandle(sliderBasePos + QPoint(m_black, 0), p, QColor(32, 32, 32), + m_currentItem == BlackSlider); + // gamma + drawSliderHandle( + sliderBasePos + QPoint(gammaToHPos(m_gamma, m_black, m_white), 0), p, + Qt::gray, m_currentItem == GammaSlider); + // white + drawSliderHandle(sliderBasePos + QPoint(m_white, 0), p, + QColor(220, 220, 220), m_currentItem == WhiteSlider); + } else if (m_mode == BlackAndWhite) + // threshold + drawSliderHandle(sliderBasePos + QPoint(m_threshold, 0), p, Qt::gray, + m_currentItem == ThresholdSlider); + p.setRenderHint(QPainter::Antialiasing, false); +} + +//----------------------------------------------------------------------------- + +void CameraCaptureLevelHistogram::mousePressEvent(QMouseEvent* event) { + if (event->button() != Qt::LeftButton) return; + if (m_currentItem == Histogram) { + m_histogramCue = true; + return; + } + if (m_currentItem == None) return; + QPoint pos = event->pos(); + if (m_currentItem == BlackSlider) + m_offset = pos.x() - SIDE_MARGIN - m_black; + else if (m_currentItem == GammaSlider) + m_offset = pos.x() - SIDE_MARGIN - gammaToHPos(m_gamma, m_black, m_white); + else if (m_currentItem == BlackSlider) + m_offset = pos.x() - SIDE_MARGIN - m_white; + else if (m_currentItem == ThresholdSlider) + m_offset = pos.x() - SIDE_MARGIN - m_threshold; +} + +//----------------------------------------------------------------------------- + +void CameraCaptureLevelHistogram::mouseMoveEvent(QMouseEvent* event) { + QPoint pos = event->pos(); + if (event->buttons() & Qt::LeftButton) { + if (m_currentItem == None || m_currentItem == Histogram) return; + + int hPos = pos.x() - SIDE_MARGIN - m_offset; + bool changed = false; + if (m_currentItem == BlackSlider) { + if (hPos < 0) + hPos = 0; + else if (hPos > m_white - 2) + hPos = m_white - 2; + if (hPos != m_black) { + m_black = hPos; + changed = true; + } + } else if (m_currentItem == GammaSlider) { + if (hPos < m_black + 1) + hPos = m_black + 1; + else if (hPos > m_white - 1) + hPos = m_white - 1; + float gamma = hPosToGamma(hPos, m_black, m_white); + if (gamma != m_gamma) { + m_gamma = gamma; + changed = true; + } + } else if (m_currentItem == WhiteSlider) { + if (hPos < m_black + 2) + hPos = m_black + 2; + else if (hPos > 255) + hPos = 255; + if (hPos != m_white) { + m_white = hPos; + changed = true; + } + } else if (m_currentItem == ThresholdSlider) { + if (hPos < 0) + hPos = 0; + else if (hPos > 255) + hPos = 255; + if (hPos != m_threshold) { + m_threshold = hPos; + changed = true; + } + } + if (changed) { + update(); + emit valueChange(m_currentItem); + } + return; + } + + // on hover + LevelControlItem oldItem = m_currentItem; + m_currentItem = None; + setToolTip(""); + QRect histoRect(5, 1, 256, HISTOGRAM_HEIGHT); + if (histoRect.contains(pos)) { + setToolTip(tr("Click to Update Histogram")); + m_currentItem = Histogram; + } else { + // slider handles + QPoint sliderBasePos(SIDE_MARGIN, HISTOGRAM_HEIGHT + 2); + QRect sliderRect(-6, 0, 12, 12); + if (m_mode == Color_GrayScale) { + // white + if (sliderRect.translated(sliderBasePos + QPoint(m_white, 0)) + .contains(pos)) { + m_currentItem = WhiteSlider; + setToolTip(tr("Drag to Move White Point")); + } + // gamma + else if (sliderRect + .translated( + sliderBasePos + + QPoint(gammaToHPos(m_gamma, m_black, m_white), 0)) + .contains(pos)) { + m_currentItem = GammaSlider; + setToolTip(tr("Drag to Move Gamma")); + } + // black + else if (sliderRect.translated(sliderBasePos + QPoint(m_black, 0)) + .contains(pos)) { + m_currentItem = BlackSlider; + setToolTip(tr("Drag to Move Black Point")); + } + } else if (m_mode == BlackAndWhite) { + // threshold + if (sliderRect.translated(sliderBasePos + QPoint(m_threshold, 0)) + .contains(pos)) { + m_currentItem = ThresholdSlider; + setToolTip(tr("Drag to Move Threshold Point")); + } + } + } + if (oldItem != m_currentItem) update(); +} + +//----------------------------------------------------------------------------- + +void CameraCaptureLevelHistogram::mouseReleaseEvent(QMouseEvent* event) { + m_offset = 0; +} + +//----------------------------------------------------------------------------- + +void CameraCaptureLevelHistogram::leaveEvent(QEvent* event) { + m_currentItem = None; + m_offset = 0; + update(); +} + +//============================================================================= + +CameraCaptureLevelControl::CameraCaptureLevelControl(QWidget* parent) + : QFrame(parent) { + m_histogram = new CameraCaptureLevelHistogram(this); + m_blackFld = new IntLineEdit(this, m_histogram->black(), 0, 253); + m_whiteFld = new IntLineEdit(this, m_histogram->white(), 2, 255); + m_thresholdFld = new IntLineEdit(this, m_histogram->threshold(), 0, 255); + m_gammaFld = new DoubleLineEdit(this, m_histogram->gamma()); + + m_blackFld->setToolTip(tr("Black Point Value")); + m_whiteFld->setToolTip(tr("White Point Value")); + m_thresholdFld->setToolTip(tr("Threshold Value")); + m_thresholdFld->hide(); + m_gammaFld->setRange(0.01, 9.99); + m_gammaFld->setDecimals(2); + m_gammaFld->setFixedWidth(54); + m_gammaFld->setToolTip(tr("Gamma Value")); + + QVBoxLayout* mainLay = new QVBoxLayout(); + mainLay->setMargin(0); + mainLay->setSpacing(4); + { + mainLay->addWidget(m_histogram, 0, Qt::AlignHCenter); + QHBoxLayout* fieldsLay = new QHBoxLayout(); + fieldsLay->setMargin(1); + fieldsLay->setSpacing(0); + { + fieldsLay->addWidget(m_blackFld, 0); + fieldsLay->addStretch(1); + fieldsLay->addWidget(m_gammaFld, 0); + fieldsLay->addWidget(m_thresholdFld, 0); + fieldsLay->addStretch(1); + fieldsLay->addWidget(m_whiteFld, 0); + } + mainLay->addLayout(fieldsLay, 0); + } + setLayout(mainLay); + + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); + + connect(m_histogram, SIGNAL(valueChange(int)), this, + SLOT(onHistogramValueChanged(int))); + connect(m_blackFld, SIGNAL(editingFinished()), this, SLOT(onFieldChanged())); + connect(m_whiteFld, SIGNAL(editingFinished()), this, SLOT(onFieldChanged())); + connect(m_gammaFld, SIGNAL(editingFinished()), this, SLOT(onFieldChanged())); + connect(m_thresholdFld, SIGNAL(editingFinished()), this, + SLOT(onFieldChanged())); +} + +//----------------------------------------------------------------------------- + +void CameraCaptureLevelControl::onHistogramValueChanged(int itemId) { + if (itemId == CameraCaptureLevelHistogram::BlackSlider) { + m_blackFld->setValue(m_histogram->black()); + m_whiteFld->setRange(m_histogram->black() + 2, 255); + } else if (itemId == CameraCaptureLevelHistogram::WhiteSlider) { + m_whiteFld->setValue(m_histogram->white()); + m_blackFld->setRange(0, m_histogram->white() - 2); + } else if (itemId == CameraCaptureLevelHistogram::GammaSlider) { + m_gammaFld->setValue(m_histogram->gamma()); + } else if (itemId == CameraCaptureLevelHistogram::ThresholdSlider) { + m_thresholdFld->setValue(m_histogram->threshold()); + } +} + +//----------------------------------------------------------------------------- + +void CameraCaptureLevelControl::onFieldChanged() { + if (m_histogram->mode() == CameraCaptureLevelHistogram::Color_GrayScale) + m_histogram->setValues(m_blackFld->getValue(), m_whiteFld->getValue(), + m_gammaFld->getValue()); + else if (m_histogram->mode() == CameraCaptureLevelHistogram::BlackAndWhite) + m_histogram->setThreshold(m_thresholdFld->getValue()); + + m_histogram->update(); +} + +//----------------------------------------------------------------------------- + +void CameraCaptureLevelControl::setMode(bool color_grayscale) { + m_histogram->setMode((color_grayscale) + ? CameraCaptureLevelHistogram::Color_GrayScale + : CameraCaptureLevelHistogram::BlackAndWhite); + m_blackFld->setVisible(color_grayscale); + m_whiteFld->setVisible(color_grayscale); + m_gammaFld->setVisible(color_grayscale); + m_thresholdFld->setVisible(!color_grayscale); + update(); +} diff --git a/toonz/sources/toonz/cameracapturelevelcontrol.h b/toonz/sources/toonz/cameracapturelevelcontrol.h new file mode 100644 index 0000000..4254dd7 --- /dev/null +++ b/toonz/sources/toonz/cameracapturelevelcontrol.h @@ -0,0 +1,100 @@ +#pragma once + +#ifndef CAMERA_CAPTURE_LEVEL_CONTROL_H +#define CAMERA_CAPTURE_LEVEL_CONTROL_H + +#include +#include + +namespace DVGui { +class IntLineEdit; +class DoubleLineEdit; +} +//============================================================================= +// CameraCaptureLevelHistogram +//----------------------------------------------------------------------------- +class CameraCaptureLevelHistogram : public QFrame { + Q_OBJECT +public: + enum LevelControlItem { + None = 0, + BlackSlider, + WhiteSlider, + GammaSlider, + ThresholdSlider, + Histogram, + NumItems + }; + enum LevelControlMode { Color_GrayScale, BlackAndWhite, NumModes }; + +private: + bool m_histogramCue; + QVector m_histogramData; + + LevelControlItem m_currentItem; + + int m_black, m_white, m_threshold; + float m_gamma; + int m_offset; // offset between the handle position and the clicked position + + LevelControlMode m_mode; + +public: + CameraCaptureLevelHistogram(QWidget* parent = 0); + + void updateHistogram(QImage& image); + + int black() { return m_black; } + int white() { return m_white; } + float gamma() { return m_gamma; } + int threshold() { return m_threshold; } + LevelControlMode mode() { return m_mode; } + void setValues(int black, int white, float gamma) { + m_black = black; + m_white = white; + m_gamma = gamma; + } + void setThreshold(int thres) { m_threshold = thres; } + void setMode(LevelControlMode mode) { m_mode = mode; } + +protected: + void paintEvent(QPaintEvent* event) override; + + void mousePressEvent(QMouseEvent* event) override; + void mouseMoveEvent(QMouseEvent* event) override; + void mouseReleaseEvent(QMouseEvent* event) override; + + void leaveEvent(QEvent* event) override; + +signals: + void valueChange(int itemId); +}; + +//----------------------------------------------------------------------------- + +class CameraCaptureLevelControl : public QFrame { + Q_OBJECT + + CameraCaptureLevelHistogram* m_histogram; + DVGui::IntLineEdit *m_blackFld, *m_whiteFld, *m_thresholdFld; + DVGui::DoubleLineEdit* m_gammaFld; + +public: + CameraCaptureLevelControl(QWidget* parent = 0); + + void updateHistogram(QImage& image) { m_histogram->updateHistogram(image); } + void setMode(bool color_grayscale); + + void getValues(int& black, int& white, float& gamma) { + black = m_histogram->black(); + white = m_histogram->white(); + gamma = m_histogram->gamma(); + } + float getThreshold() { return m_histogram->threshold(); } + +protected slots: + void onHistogramValueChanged(int itemId); + void onFieldChanged(); +}; + +#endif \ No newline at end of file diff --git a/toonz/sources/toonz/cleanuppopup.cpp b/toonz/sources/toonz/cleanuppopup.cpp index 252443d..88604aa 100644 --- a/toonz/sources/toonz/cleanuppopup.cpp +++ b/toonz/sources/toonz/cleanuppopup.cpp @@ -292,9 +292,9 @@ CleanupPopup::CleanupPopup() , m_params(new CleanupParameters) , m_updater(new LevelUpdater) , m_originalLevelPath() - , m_originalPalette(0) { + , m_originalPalette(0) + , m_firstLevelFrame(true) { setWindowTitle(tr("Cleanup")); - // Progress Bar m_progressLabel = new QLabel(tr("Cleanup in progress")); m_progressBar = new QProgressBar; @@ -1217,10 +1217,20 @@ void CleanupPopup::cleanupFrame() { IconGenerator::instance()->invalidate(sl, fid); } else { // Perform main processing - double dpix, dpiy; - original->getDpi(dpix, dpiy); - cl->setCustomDpi((dpix == 0 && dpiy == 0) ? sl->getProperties()->getDpi() - : TPointD()); + + // Obtain the source dpi. Changed it to be done once at the first frame of + // each level in order to avoid the following problem: + // If the original raster level has no dpi (such as TGA images), obtaining + // dpi in every frame causes dpi mismatch between the first frame and the + // following frames, since the value + // TXshSimpleLevel::m_properties->getDpi() will be changed to the + // dpi of cleanup camera (= TLV's dpi) after finishing the first frame. + if (m_firstLevelFrame) { + TPointD dpi; + original->getDpi(dpi.x, dpi.y); + if (dpi.x == 0 && dpi.y == 0) dpi = sl->getProperties()->getDpi(); + cl->setSourceDpi(dpi); + } CleanupPreprocessedImage *cpi; { diff --git a/toonz/sources/toonz/cleanupsettingsmodel.cpp b/toonz/sources/toonz/cleanupsettingsmodel.cpp index 559caea..499570a 100644 --- a/toonz/sources/toonz/cleanupsettingsmodel.cpp +++ b/toonz/sources/toonz/cleanupsettingsmodel.cpp @@ -420,10 +420,10 @@ void CleanupSettingsModel::processFrame(TXshSimpleLevel *sl, TFrameId fid) { bool doCameraTest = (m_cameraTestsCount > 0); // Retrieve new image dpi - double dpix, dpiy; - imageToCleanup->getDpi(dpix, dpiy); - cl->setCustomDpi((dpix == 0 && dpiy == 0) ? sl->getProperties()->getDpi() - : TPointD()); + TPointD dpi; + imageToCleanup->getDpi(dpi.x, dpi.y); + if (dpi.x == 0 && dpi.y == 0) dpi = sl->getProperties()->getDpi(); + cl->setSourceDpi(dpi); // Perform primary cleanup processing if (doProcessing) { diff --git a/toonz/sources/toonz/filebrowserpopup.cpp b/toonz/sources/toonz/filebrowserpopup.cpp index 11c40c6..23f56f1 100644 --- a/toonz/sources/toonz/filebrowserpopup.cpp +++ b/toonz/sources/toonz/filebrowserpopup.cpp @@ -2072,7 +2072,8 @@ BrowserPopupController::BrowserPopupController() : m_browserPopup() { void BrowserPopupController::openPopup(QStringList filters, bool isDirectoryOnly, - QString lastSelectedPath) { + QString lastSelectedPath, + const QWidget *parentWidget) { if (!m_browserPopup) m_browserPopup = new BrowserPopup(); m_browserPopup->setWindowTitle(QString("")); @@ -2084,6 +2085,19 @@ void BrowserPopupController::openPopup(QStringList filters, m_browserPopup->initFolder(TFilePath(lastSelectedPath.toStdWString())); m_browserPopup->setFileMode(isDirectoryOnly); + if (parentWidget) { + QWidget *pwidget = NULL; + foreach (pwidget, QApplication::topLevelWidgets()) { + if (pwidget->isWindow() && pwidget->isVisible() && + pwidget->isAncestorOf(parentWidget)) { + Qt::WindowFlags flags = m_browserPopup->windowFlags(); + m_browserPopup->setParent(pwidget); + m_browserPopup->setWindowFlags(flags); + break; + } + } + } + if (isDirectoryOnly) m_browserPopup->setFilename(TFilePath(lastSelectedPath.toStdWString())); diff --git a/toonz/sources/toonz/filebrowserpopup.h b/toonz/sources/toonz/filebrowserpopup.h index ae5ba8e..3113261 100644 --- a/toonz/sources/toonz/filebrowserpopup.h +++ b/toonz/sources/toonz/filebrowserpopup.h @@ -433,8 +433,11 @@ public: BrowserPopupController(); bool isExecute() override { return m_isExecute; } + // if parentWidget is non-zero, then check if the any modal dialog is ancestor + // of it. void openPopup(QStringList filters, bool isDirectoryOnly, - QString lastSelectedPath) override; + QString lastSelectedPath, + const QWidget *parentWidget = NULL) override; QString getPath() override; }; diff --git a/toonz/sources/toonz/main.cpp b/toonz/sources/toonz/main.cpp index e8a0288..43e1010 100644 --- a/toonz/sources/toonz/main.cpp +++ b/toonz/sources/toonz/main.cpp @@ -586,7 +586,7 @@ int main(int argc, char *argv[]) { a.processEvents(); // Carico lo styleSheet - QString currentStyle = Preferences::instance()->getCurrentStyleSheet(); + QString currentStyle = Preferences::instance()->getCurrentStyleSheetPath(); a.setStyleSheet(currentStyle); TApp::instance()->setMainWindow(&w); diff --git a/toonz/sources/toonz/mainwindow.cpp b/toonz/sources/toonz/mainwindow.cpp index debd722..43e41fb 100644 --- a/toonz/sources/toonz/mainwindow.cpp +++ b/toonz/sources/toonz/mainwindow.cpp @@ -2116,7 +2116,8 @@ void MainWindow::defineActions() { tr("Brush hardness - Increase"), ""); createToolOptionsAction("A_DecreaseBrushHardness", tr("Brush hardness - Decrease"), ""); - + createToolOptionsAction("A_ToolOption_SnapSensitivity", tr("SnapSensitivity"), + ""); createToolOptionsAction("A_ToolOption_AutoGroup", tr("Auto Group"), ""); createToolOptionsAction("A_ToolOption_BreakSharpAngles", tr("Break sharp angles"), ""); @@ -2254,7 +2255,7 @@ class ReloadStyle final : public MenuItemHandler { public: ReloadStyle() : MenuItemHandler("MI_ReloadStyle") {} void execute() override { - QString currentStyle = Preferences::instance()->getCurrentStyleSheet(); + QString currentStyle = Preferences::instance()->getCurrentStyleSheetPath(); QFile file(currentStyle); file.open(QFile::ReadOnly); QString styleSheet = QString(file.readAll()); diff --git a/toonz/sources/toonz/penciltestpopup.cpp b/toonz/sources/toonz/penciltestpopup.cpp index 818e2cc..e3e8b2d 100644 --- a/toonz/sources/toonz/penciltestpopup.cpp +++ b/toonz/sources/toonz/penciltestpopup.cpp @@ -7,6 +7,7 @@ #include "filebrowsermodel.h" #include "cellselection.h" #include "toonzqt/tselectionhandle.h" +#include "cameracapturelevelcontrol.h" // TnzQt includes #include "toonzqt/menubarcommand.h" #include "toonzqt/filefield.h" @@ -44,6 +45,9 @@ #include #include #include +#ifdef MACOSX +#include +#endif #include #include @@ -81,6 +85,7 @@ TEnv::StringVar CamCapCameraResolution("CamCapCameraResolution", ""); // Whether to open save-in popup on launch TEnv::IntVar CamCapOpenSaveInPopupOnLaunch("CamCapOpenSaveInPopupOnLaunch", 0); // SaveInFolderPopup settings +TEnv::StringVar CamCapSaveInParentFolder("CamCapSaveInParentFolder", ""); TEnv::IntVar CamCapSaveInPopupSubFolder("CamCapSaveInPopupSubFolder", 0); TEnv::StringVar CamCapSaveInPopupProject("CamCapSaveInPopupProject", ""); TEnv::StringVar CamCapSaveInPopupEpisode("CamCapSaveInPopupEpisode", "1"); @@ -130,69 +135,40 @@ void bgReduction(QImage& srcImg, QImage& bgImg, int reduction) { } } -// referenced from brightnessandcontrastpopup.cpp -void my_compute_lut(double contrast, double brightness, std::vector& lut) { - const int maxChannelValue = lut.size() - 1; - const double half_maxChannelValueD = 0.5 * maxChannelValue; - const double maxChannelValueD = maxChannelValue; +void my_compute_lut(int black, int white, float gamma, std::vector& lut) { + const int maxChannelValue = lut.size() - 1; + const float half_maxChannelValueF = 0.5f * maxChannelValue; + const float maxChannelValueF = maxChannelValue; - int i; - double value, nvalue, power; + float value; int lutSize = lut.size(); - for (i = 0; i < lutSize; i++) { - value = i / maxChannelValueD; - - // brightness - if (brightness < 0.0) - value = value * (1.0 + brightness); - else - value = value + ((1.0 - value) * brightness); - - // contrast - if (contrast < 0.0) { - if (value > 0.5) - nvalue = 1.0 - value; - else - nvalue = value; - if (nvalue < 0.0) nvalue = 0.0; - nvalue = 0.5 * pow(nvalue * 2.0, (double)(1.0 + contrast)); - if (value > 0.5) - value = 1.0 - nvalue; - else - value = nvalue; - } else { - if (value > 0.5) - nvalue = 1.0 - value; - else - nvalue = value; - if (nvalue < 0.0) nvalue = 0.0; - power = - (contrast == 1.0) ? half_maxChannelValueD : 1.0 / (1.0 - contrast); - nvalue = 0.5 * pow(2.0 * nvalue, power); - if (value > 0.5) - value = 1.0 - nvalue; - else - value = nvalue; + for (int i = 0; i < lutSize; i++) { + if (i <= black) + value = 0.0f; + else if (i >= white) + value = 1.0f; + else { + value = (float)(i - black) / (float)(white - black); + value = std::pow(value, 1.0f / gamma); } - lut[i] = value * maxChannelValueD; + lut[i] = (int)std::floor(value * maxChannelValueF); } } //----------------------------------------------------------------------------- inline void doPixGray(QRgb* pix, const std::vector& lut) { - int gray = qGray(qRgb(lut[qRed(*pix)], lut[qGreen(*pix)], lut[qBlue(*pix)])); + int gray = lut[qGray(*pix)]; *pix = qRgb(gray, gray, gray); } //----------------------------------------------------------------------------- -inline void doPixBinary(QRgb* pix, const std::vector& lut, - unsigned char threshold) { - int gray = qGray(qRgb(lut[qRed(*pix)], lut[qGreen(*pix)], lut[qBlue(*pix)])); - if ((unsigned char)gray >= threshold) +inline void doPixBinary(QRgb* pix, int threshold) { + int gray = qGray(*pix); + if (gray >= threshold) gray = 255; else gray = 0; @@ -208,34 +184,18 @@ inline void doPix(QRgb* pix, const std::vector& lut) { //----------------------------------------------------------------------------- -void onChange(QImage& img, int contrast, int brightness, bool doGray, - unsigned char threshold = 0) { - double b = brightness / 127.0; - double c = contrast / 127.0; - if (c > 1) c = 1; - if (c < -1) c = -1; - +void onChange(QImage& img, int black, int white, float gamma, bool doGray) { std::vector lut(TPixel32::maxChannelValue + 1); - my_compute_lut(c, b, lut); + my_compute_lut(black, white, gamma, lut); int lx = img.width(), y, ly = img.height(); if (doGray) { - if (threshold == 0) { // Grayscale - for (y = 0; y < ly; ++y) { - QRgb *pix = (QRgb *)img.scanLine(y), *endPix = (QRgb *)(pix + lx); - while (pix < endPix) { - doPixGray(pix, lut); - ++pix; - } - } - } else { // Binary - for (y = 0; y < ly; ++y) { - QRgb *pix = (QRgb *)img.scanLine(y), *endPix = (QRgb *)(pix + lx); - while (pix < endPix) { - doPixBinary(pix, lut, threshold); - ++pix; - } + for (y = 0; y < ly; ++y) { + QRgb *pix = (QRgb *)img.scanLine(y), *endPix = (QRgb *)(pix + lx); + while (pix < endPix) { + doPixGray(pix, lut); + ++pix; } } } else { // color @@ -251,6 +211,19 @@ void onChange(QImage& img, int contrast, int brightness, bool doGray, //----------------------------------------------------------------------------- +void onChangeBW(QImage& img, int threshold) { + int lx = img.width(), y, ly = img.height(); + for (y = 0; y < ly; ++y) { + QRgb *pix = (QRgb *)img.scanLine(y), *endPix = (QRgb *)(pix + lx); + while (pix < endPix) { + doPixBinary(pix, threshold); + ++pix; + } + } +} + +//----------------------------------------------------------------------------- + TPointD getCurrentCameraDpi() { TCamera* camera = TApp::instance()->getCurrentScene()->getScene()->getCurrentCamera(); @@ -584,8 +557,14 @@ PencilTestSaveInFolderPopup::PencilTestSaveInFolderPopup(QWidget* parent) : Dialog(parent, true, false, "PencilTestSaveInFolder") { setWindowTitle("Create the Destination Subfolder to Save"); - m_parentFolderField = new FileField( - this, QString("+%1").arg(QString::fromStdString(TProject::Extras))); + QString parentFolder = QString::fromStdString(CamCapSaveInParentFolder); + if (parentFolder.isEmpty()) + parentFolder = QString("+%1").arg(QString::fromStdString(TProject::Extras)); + m_parentFolderField = new FileField(this, parentFolder); + + QPushButton* setAsDefaultBtn = new QPushButton(tr("Set As Default"), this); + setAsDefaultBtn->setToolTip( + tr("Set the current \"Save In\" path as the default.")); m_subFolderCB = new QCheckBox(tr("Create Subfolder"), this); @@ -638,6 +617,7 @@ PencilTestSaveInFolderPopup::PencilTestSaveInFolderPopup(QWidget* parent) << tr("Episode + Sequence + Scene") << tr("Project + Episode + Sequence + Scene"); m_subNameFormatCombo->addItems(items); + m_subNameFormatCombo->setCurrentIndex(CamCapSaveInPopupAutoSubName - 1); showPopupOnLaunchCB->setChecked(CamCapOpenSaveInPopupOnLaunch != 0); @@ -647,13 +627,18 @@ PencilTestSaveInFolderPopup::PencilTestSaveInFolderPopup(QWidget* parent) m_topLayout->setMargin(10); m_topLayout->setSpacing(10); { - QHBoxLayout* saveInLay = new QHBoxLayout(); + QGridLayout* saveInLay = new QGridLayout(); saveInLay->setMargin(0); - saveInLay->setSpacing(3); + saveInLay->setHorizontalSpacing(3); + saveInLay->setVerticalSpacing(0); { - saveInLay->addWidget(new QLabel(tr("Save In:"), this), 0); - saveInLay->addWidget(m_parentFolderField, 1); + saveInLay->addWidget(new QLabel(tr("Save In:"), this), 0, 0, + Qt::AlignRight | Qt::AlignVCenter); + saveInLay->addWidget(m_parentFolderField, 0, 1); + saveInLay->addWidget(setAsDefaultBtn, 1, 1); } + saveInLay->setColumnStretch(0, 0); + saveInLay->setColumnStretch(1, 1); m_topLayout->addLayout(saveInLay); m_topLayout->addWidget(m_subFolderCB, 0, Qt::AlignLeft); @@ -725,9 +710,13 @@ PencilTestSaveInFolderPopup::PencilTestSaveInFolderPopup(QWidget* parent) SLOT(updateSubFolderName())); ret = ret && connect(m_autoSubNameCB, SIGNAL(clicked(bool)), this, SLOT(onAutoSubNameCBClicked(bool))); + ret = ret && connect(m_subNameFormatCombo, SIGNAL(currentIndexChanged(int)), + this, SLOT(updateSubFolderName())); ret = ret && connect(showPopupOnLaunchCB, SIGNAL(clicked(bool)), this, SLOT(onShowPopupOnLaunchCBClicked(bool))); + ret = ret && connect(setAsDefaultBtn, SIGNAL(pressed()), this, + SLOT(onSetAsDefaultBtnPressed())); ret = ret && connect(okBtn, SIGNAL(clicked(bool)), this, SLOT(onOkPressed())); ret = ret && connect(cancelBtn, SIGNAL(clicked(bool)), this, SLOT(reject())); @@ -746,6 +735,12 @@ QString PencilTestSaveInFolderPopup::getPath() { } //----------------------------------------------------------------------------- + +QString PencilTestSaveInFolderPopup::getParentPath() { + return m_parentFolderField->getPath(); +} + +//----------------------------------------------------------------------------- namespace { QString formatString(QString inStr, int charNum) { if (inStr.isEmpty()) return QString("0").rightJustified(charNum, '0'); @@ -813,6 +808,12 @@ void PencilTestSaveInFolderPopup::onShowPopupOnLaunchCBClicked(bool on) { //----------------------------------------------------------------------------- +void PencilTestSaveInFolderPopup::onSetAsDefaultBtnPressed() { + CamCapSaveInParentFolder = m_parentFolderField->getPath().toStdString(); +} + +//----------------------------------------------------------------------------- + void PencilTestSaveInFolderPopup::onOkPressed() { if (!m_subFolderCB->isChecked()) { accept(); @@ -850,7 +851,9 @@ void PencilTestSaveInFolderPopup::onOkPressed() { CamCapSaveInPopupEpisode = m_episodeField->text().toStdString(); CamCapSaveInPopupSequence = m_sequenceField->text().toStdString(); CamCapSaveInPopupScene = m_sceneField->text().toStdString(); - CamCapSaveInPopupAutoSubName = (m_autoSubNameCB->isChecked()) ? 1 : 0; + CamCapSaveInPopupAutoSubName = (!m_autoSubNameCB->isChecked()) + ? 0 + : m_subNameFormatCombo->currentIndex() + 1; // create folder try { @@ -886,6 +889,8 @@ PencilTestPopup::PencilTestPopup() TFilePath(L"penciltest" + dateTime + L".jpg"); m_cacheImagePath = cacheImageFp.getQString(); + m_saveInFolderPopup = new PencilTestSaveInFolderPopup(this); + m_cameraViewfinder = new MyViewFinder(this); // CameraViewfinderContainer* cvfContainer = new // CameraViewfinderContainer(m_cameraViewfinder, this); @@ -904,8 +909,9 @@ PencilTestPopup::PencilTestPopup() m_frameNumberEdit = new FrameNumberLineEdit(this, startFrame); m_fileTypeCombo = new QComboBox(this); m_fileFormatOptionButton = new QPushButton(tr("Options"), this); - m_saveInFileFld = new FileField( - 0, QString("+%1").arg(QString::fromStdString(TProject::Extras))); + + m_saveInFileFld = new FileField(this, m_saveInFolderPopup->getParentPath()); + QToolButton* nextLevelButton = new QToolButton(this); m_saveOnCaptureCB = new QCheckBox(tr("Save images as they are captured"), this); @@ -913,10 +919,8 @@ PencilTestPopup::PencilTestPopup() QGroupBox* imageFrame = new QGroupBox(tr("Image adjust"), this); m_colorTypeCombo = new QComboBox(this); - m_thresholdFld = new IntField(this); - m_contrastFld = new IntField(this); - m_brightnessFld = new IntField(this); - m_upsideDownCB = new QCheckBox(tr("Upside down"), this); + m_camCapLevelControl = new CameraCaptureLevelControl(this); + m_upsideDownCB = new QCheckBox(tr("Upside down"), this); m_bgReductionFld = new IntField(this); m_captureWhiteBGButton = new QPushButton(tr("Capture white BG"), this); @@ -943,8 +947,10 @@ PencilTestPopup::PencilTestPopup() QPushButton* subfolderButton = new QPushButton(tr("Subfolder"), this); - m_saveInFolderPopup = new PencilTestSaveInFolderPopup(this); - +#ifdef MACOSX + m_dummyViewFinder = new QCameraViewfinder(this); + m_dummyViewFinder->hide(); +#endif //---- m_resolutionCombo->setMaximumWidth(fontMetrics().width("0000 x 0000") + 25); @@ -961,13 +967,6 @@ PencilTestPopup::PencilTestPopup() imageFrame->setObjectName("CleanupSettingsFrame"); m_colorTypeCombo->addItems({"Color", "Grayscale", "Black & White"}); m_colorTypeCombo->setCurrentIndex(0); - m_thresholdFld->setRange(1, 255); - m_thresholdFld->setValue(128); - m_thresholdFld->setDisabled(true); - m_contrastFld->setRange(-127, 127); - m_contrastFld->setValue(0); - m_brightnessFld->setRange(-127, 127); - m_brightnessFld->setValue(0); m_upsideDownCB->setChecked(false); m_bgReductionFld->setRange(0, 100); @@ -1098,25 +1097,15 @@ PencilTestPopup::PencilTestPopup() Qt::AlignRight); imageLay->addWidget(m_colorTypeCombo, 0, 1); - imageLay->addWidget(new QLabel(tr("Threshold:"), this), 1, 0, - Qt::AlignRight); - imageLay->addWidget(m_thresholdFld, 1, 1, 1, 2); + imageLay->addWidget(m_camCapLevelControl, 1, 0, 1, 3); - imageLay->addWidget(new QLabel(tr("Contrast:"), this), 2, 0, - Qt::AlignRight); - imageLay->addWidget(m_contrastFld, 2, 1, 1, 2); + imageLay->addWidget(m_upsideDownCB, 2, 0, 1, 3, Qt::AlignLeft); - imageLay->addWidget(new QLabel(tr("Brightness:"), this), 3, 0, + imageLay->addWidget(new QLabel(tr("BG reduction:"), this), 3, 0, Qt::AlignRight); - imageLay->addWidget(m_brightnessFld, 3, 1, 1, 2); + imageLay->addWidget(m_bgReductionFld, 3, 1, 1, 2); - imageLay->addWidget(m_upsideDownCB, 4, 0, 1, 3, Qt::AlignLeft); - - imageLay->addWidget(new QLabel(tr("BG reduction:"), this), 5, 0, - Qt::AlignRight); - imageLay->addWidget(m_bgReductionFld, 5, 1, 1, 2); - - imageLay->addWidget(m_captureWhiteBGButton, 6, 0, 1, 3); + imageLay->addWidget(m_captureWhiteBGButton, 4, 0, 1, 3); } imageLay->setColumnStretch(0, 0); imageLay->setColumnStretch(1, 0); @@ -1315,6 +1304,12 @@ void PencilTestPopup::onCameraListComboActivated(int comboIndex) { this, SLOT(onImageCaptured(int, const QImage&))); delete m_cameraImageCapture; } + +#ifdef MACOSX + // this line is needed only in macosx + m_currentCamera->setViewfinder(m_dummyViewFinder); +#endif + m_cameraImageCapture = new QCameraImageCapture(m_currentCamera, this); /* Capturing to buffer currently seems not to be supported on Windows */ // if @@ -1386,6 +1381,10 @@ void PencilTestPopup::onResolutionComboActivated(const QString& itemText) { m_cameraImageCapture->setEncodingSettings(imageEncoderSettings); m_cameraViewfinder->updateSize(); +#ifdef MACOSX + m_dummyViewFinder->resize(newResolution); +#endif + // reset white bg m_whiteBGImg = QImage(); m_bgReductionFld->setDisabled(true); @@ -1463,7 +1462,7 @@ void PencilTestPopup::onNextName() { //----------------------------------------------------------------------------- void PencilTestPopup::onColorTypeComboChanged(int index) { - m_thresholdFld->setEnabled(index == 2); + m_camCapLevelControl->setMode(index != 2); } //----------------------------------------------------------------------------- @@ -1590,11 +1589,18 @@ void PencilTestPopup::processImage(QImage& image) { if (!m_whiteBGImg.isNull() && m_bgReductionFld->getValue() != 0) { bgReduction(image, m_whiteBGImg, m_bgReductionFld->getValue()); } - - int threshold = - (m_colorTypeCombo->currentIndex() != 2) ? 0 : m_thresholdFld->getValue(); - onChange(image, m_contrastFld->getValue(), m_brightnessFld->getValue(), - m_colorTypeCombo->currentIndex() != 0, threshold); + // obtain histogram AFTER bg reduction + m_camCapLevelControl->updateHistogram(image); + + // color and grayscale mode + if (m_colorTypeCombo->currentIndex() != 2) { + int black, white; + float gamma; + m_camCapLevelControl->getValues(black, white, gamma); + onChange(image, black, white, gamma, m_colorTypeCombo->currentIndex() != 0); + } else { + onChangeBW(image, m_camCapLevelControl->getThreshold()); + } } //----------------------------------------------------------------------------- diff --git a/toonz/sources/toonz/penciltestpopup.h b/toonz/sources/toonz/penciltestpopup.h index 6697fc8..6009317 100644 --- a/toonz/sources/toonz/penciltestpopup.h +++ b/toonz/sources/toonz/penciltestpopup.h @@ -22,12 +22,17 @@ class QTimer; class QIntValidator; class QRegExpValidator; class QPushButton; +#ifdef MACOSX +class QCameraViewfinder; +#endif namespace DVGui { class FileField; class IntField; } +class CameraCaptureLevelControl; + //============================================================================= // MyViewFinder //----------------------------------------------------------------------------- @@ -138,11 +143,13 @@ class PencilTestSaveInFolderPopup : public DVGui::Dialog { public: PencilTestSaveInFolderPopup(QWidget* parent = 0); QString getPath(); + QString getParentPath(); protected slots: void updateSubFolderName(); void onAutoSubNameCBClicked(bool); void onShowPopupOnLaunchCBClicked(bool); + void onSetAsDefaultBtnPressed(); void onOkPressed(); }; @@ -166,8 +173,7 @@ class PencilTestPopup : public DVGui::Dialog { *m_captureButton, *m_loadImageButton; DVGui::FileField* m_saveInFileFld; FrameNumberLineEdit* m_frameNumberEdit; - DVGui::IntField *m_thresholdFld, *m_contrastFld, *m_brightnessFld, - *m_bgReductionFld, *m_onionOpacityFld, *m_timerIntervalFld; + DVGui::IntField *m_bgReductionFld, *m_onionOpacityFld, *m_timerIntervalFld; QTimer *m_captureTimer, *m_countdownTimer; @@ -178,6 +184,12 @@ class PencilTestPopup : public DVGui::Dialog { PencilTestSaveInFolderPopup* m_saveInFolderPopup; + CameraCaptureLevelControl* m_camCapLevelControl; + +#ifdef MACOSX + QCameraViewfinder* m_dummyViewFinder; +#endif + int m_timerId; QString m_cacheImagePath; bool m_captureWhiteBGCue; diff --git a/toonz/sources/toonz/preferencespopup.cpp b/toonz/sources/toonz/preferencespopup.cpp index ad64942..b3de6d1 100644 --- a/toonz/sources/toonz/preferencespopup.cpp +++ b/toonz/sources/toonz/preferencespopup.cpp @@ -625,8 +625,8 @@ void PreferencesPopup::onAnimationStepChanged() { //----------------------------------------------------------------------------- -void PreferencesPopup::onLanguageTypeChanged(int index) { - m_pref->setCurrentLanguage(index); +void PreferencesPopup::onLanguageTypeChanged(const QString &langName) { + m_pref->setCurrentLanguage(langName); QString currentLanguage = m_pref->getCurrentLanguage(); } @@ -769,10 +769,10 @@ void PreferencesPopup::onShowKeyframesOnCellAreaChanged(int index) { //----------------------------------------------------------------------------- -void PreferencesPopup::onStyleSheetTypeChanged(int index) { - m_pref->setCurrentStyleSheet(index); +void PreferencesPopup::onStyleSheetTypeChanged(const QString &styleSheetName) { + m_pref->setCurrentStyleSheet(styleSheetName); QApplication::setOverrideCursor(Qt::WaitCursor); - QString currentStyle = m_pref->getCurrentStyleSheet(); + QString currentStyle = m_pref->getCurrentStyleSheetPath(); qApp->setStyleSheet(currentStyle); QApplication::restoreOverrideCursor(); } @@ -852,6 +852,13 @@ void PreferencesPopup::onDefLevelParameterChanged() { //----------------------------------------------------------------------------- +void PreferencesPopup::onVectorSnappingTargetChanged(int index) { + m_vectorSnappingTargetCB->setCurrentIndex(index); + m_pref->setVectorSnappingTarget(index); +} + +//----------------------------------------------------------------------------- + void PreferencesPopup::rebuildFormatsList() { const Preferences &prefs = *Preferences::instance(); @@ -1196,13 +1203,14 @@ PreferencesPopup::PreferencesPopup() //--- Drawing ------------------------------ categoryList->addItem(tr("Drawing")); - m_defScanLevelType = new QComboBox(this); - m_defLevelType = new QComboBox(this); - m_defLevelWidth = new MeasuredDoubleLineEdit(0); - m_defLevelHeight = new MeasuredDoubleLineEdit(0); - m_defLevelDpi = new DoubleLineEdit(0, 66.76); - m_autocreationType = new QComboBox(this); - m_dpiLabel = new QLabel(tr("DPI:"), this); + m_defScanLevelType = new QComboBox(this); + m_defLevelType = new QComboBox(this); + m_defLevelWidth = new MeasuredDoubleLineEdit(0); + m_defLevelHeight = new MeasuredDoubleLineEdit(0); + m_defLevelDpi = new DoubleLineEdit(0, 66.76); + m_autocreationType = new QComboBox(this); + m_dpiLabel = new QLabel(tr("DPI:"), this); + m_vectorSnappingTargetCB = new QComboBox(this); CheckBox *keepOriginalCleanedUpCB = new CheckBox(tr("Keep Original Cleaned Up Drawings As Backup"), this); CheckBox *multiLayerStylePickerCB = new CheckBox( @@ -1331,9 +1339,10 @@ PreferencesPopup::PreferencesPopup() } //--- Interface ------------------------------ QStringList styleSheetList; + currentIndex = 0; for (int i = 0; i < m_pref->getStyleSheetCount(); i++) { QString string = m_pref->getStyleSheet(i); - if (string == m_pref->getCurrentStyleSheet()) currentIndex = i; + if (string == m_pref->getCurrentStyleSheetName()) currentIndex = i; TFilePath path(string.toStdWString()); styleSheetList.push_back(QString::fromStdWString(path.getWideName())); } @@ -1493,6 +1502,11 @@ PreferencesPopup::PreferencesPopup() int autocreationType = m_pref->getAutocreationType(); m_autocreationType->setCurrentIndex(autocreationType); + QStringList vectorSnappingTargets; + vectorSnappingTargets << tr("Strokes") << tr("Guides") << tr("All"); + m_vectorSnappingTargetCB->addItems(vectorSnappingTargets); + m_vectorSnappingTargetCB->setCurrentIndex(m_pref->getVectorSnappingTarget()); + //--- Xsheet ------------------------------ xsheetAutopanDuringPlaybackCB->setChecked(m_pref->isXsheetAutopanEnabled()); m_cellsDragBehaviour->addItem(tr("Cells Only")); @@ -1919,6 +1933,9 @@ PreferencesPopup::PreferencesPopup() drawingTopLay->addWidget(new QLabel(tr("Autocreation:")), 4, 0, Qt::AlignRight); drawingTopLay->addWidget(m_autocreationType, 4, 1, 1, 3); + drawingTopLay->addWidget(new QLabel(tr("Vector Snapping:")), 5, 0, + Qt::AlignRight); + drawingTopLay->addWidget(m_vectorSnappingTargetCB, 5, 1, 1, 3); } drawingFrameLay->addLayout(drawingTopLay, 0); @@ -2170,8 +2187,9 @@ PreferencesPopup::PreferencesPopup() ret = ret && connect(m_projectRootCustom, SIGNAL(stateChanged(int)), SLOT(onProjectRootChanged())); //--- Interface ---------------------- - ret = ret && connect(styleSheetType, SIGNAL(currentIndexChanged(int)), - SLOT(onStyleSheetTypeChanged(int))); + ret = ret && + connect(styleSheetType, SIGNAL(currentIndexChanged(const QString &)), + SLOT(onStyleSheetTypeChanged(const QString &))); ret = ret && connect(m_pixelsOnlyCB, SIGNAL(stateChanged(int)), SLOT(onPixelsOnlyChanged(int))); // pixels unit may deactivated externally on loading scene (see @@ -2196,8 +2214,9 @@ PreferencesPopup::PreferencesPopup() ret = ret && connect(m_viewStep, SIGNAL(editingFinished()), SLOT(onViewValuesChanged())); if (languageList.size() > 1) - ret = ret && connect(languageType, SIGNAL(currentIndexChanged(int)), - SLOT(onLanguageTypeChanged(int))); + ret = ret && + connect(languageType, SIGNAL(currentIndexChanged(const QString &)), + SLOT(onLanguageTypeChanged(const QString &))); ret = ret && connect(moveCurrentFrameCB, SIGNAL(stateChanged(int)), this, SLOT(onMoveCurrentFrameChanged(int))); ret = @@ -2295,6 +2314,9 @@ PreferencesPopup::PreferencesPopup() SLOT(onDefLevelTypeChanged(int))); ret = ret && connect(m_autocreationType, SIGNAL(currentIndexChanged(int)), SLOT(onAutocreationTypeChanged(int))); + ret = + ret && connect(m_vectorSnappingTargetCB, SIGNAL(currentIndexChanged(int)), + SLOT(onVectorSnappingTargetChanged(int))); ret = ret && connect(m_defLevelWidth, SIGNAL(valueChanged()), SLOT(onDefLevelParameterChanged())); ret = ret && connect(m_defLevelHeight, SIGNAL(valueChanged()), diff --git a/toonz/sources/toonz/preferencespopup.h b/toonz/sources/toonz/preferencespopup.h index ab25ffa..9996df5 100644 --- a/toonz/sources/toonz/preferencespopup.h +++ b/toonz/sources/toonz/preferencespopup.h @@ -53,7 +53,8 @@ private: QComboBox *m_keyframeType, *m_cellsDragBehaviour, *m_defScanLevelType, *m_defLevelType, *m_autocreationType, *m_levelFormatNames, - *m_columnIconOm, *m_unitOm, *m_cameraUnitOm, *m_importPolicy; + *m_columnIconOm, *m_unitOm, *m_cameraUnitOm, *m_importPolicy, + *m_vectorSnappingTargetCB; DVGui::MeasuredDoubleLineEdit *m_defLevelWidth, *m_defLevelHeight; @@ -124,8 +125,8 @@ private slots: void onTranspCheckDataChanged(const TPixel32 &, bool isDragging); void onOnionDataChanged(const TPixel32 &, bool isDragging); void onOnionDataChanged(int); - void onLanguageTypeChanged(int); - void onStyleSheetTypeChanged(int); + void onLanguageTypeChanged(const QString &); + void onStyleSheetTypeChanged(const QString &); void onUndoMemorySizeChanged(); void onSVNEnabledChanged(int); void onAutomaticSVNRefreshChanged(int); @@ -146,6 +147,7 @@ private slots: void onRegionAntialiasChanged(int); void onImportPolicyChanged(int); void onImportPolicyExternallyChanged(int policy); + void onVectorSnappingTargetChanged(int index); #ifdef LINETEST void onLineTestFpsCapture(int); diff --git a/toonz/sources/toonz/sceneviewer.cpp b/toonz/sources/toonz/sceneviewer.cpp index 9016ac6..bda616c 100644 --- a/toonz/sources/toonz/sceneviewer.cpp +++ b/toonz/sources/toonz/sceneviewer.cpp @@ -472,6 +472,10 @@ SceneViewer::SceneViewer(ImageUtils::FullScreenWidget *parent) , m_mouseButton(Qt::NoButton) , m_foregroundDrawing(false) , m_tabletEvent(false) + , m_tabletActive(false) + , m_tabletMove(false) + , m_tabletPressed(false) + , m_tabletReleased(false) , m_buttonClicked(false) , m_referenceMode(NORMAL_REFERENCE) , m_previewMode(NO_PREVIEW) @@ -504,7 +508,8 @@ SceneViewer::SceneViewer(ImageUtils::FullScreenWidget *parent) , m_toolDisableReason("") , m_editPreviewSubCamera(false) , m_locator(NULL) - , m_isLocator(false) { + , m_isLocator(false) + , m_isBusyOnTabletMove(false) { m_visualSettings.m_sceneProperties = TApp::instance()->getCurrentScene()->getScene()->getProperties(); // Enables multiple key input. @@ -514,6 +519,8 @@ SceneViewer::SceneViewer(ImageUtils::FullScreenWidget *parent) setFocusPolicy(Qt::StrongFocus); setAcceptDrops(true); this->setMouseTracking(true); + // to be introduced from Qt 5.9 + // this->setTabletTracking(true); for (int i = 0; i < tArrayCount(m_viewAff); i++) setViewMatrix(getNormalZoomScale(), i); @@ -833,6 +840,8 @@ void SceneViewer::showEvent(QShowEvent *) { connect(app->getCurrentTool(), SIGNAL(toolCursorTypeChanged()), this, SLOT(onToolChanged())); + connect(app, SIGNAL(tabletLeft()), this, SLOT(resetTabletStatus())); + if (m_hRuler && m_vRuler) { if (!viewRulerToggle.getStatus()) { m_hRuler->hide(); @@ -883,10 +892,27 @@ void SceneViewer::hideEvent(QHideEvent *) { ToolHandle *toolHandle = app->getCurrentTool(); if (toolHandle) toolHandle->disconnect(this); + disconnect(app, SIGNAL(tabletLeft()), this, SLOT(resetTabletStatus())); // hide locator if (m_locator && m_locator->isVisible()) m_locator->hide(); } +int SceneViewer::getVGuideCount() { + if (viewGuideToggle.getStatus()) + return m_vRuler->getGuideCount(); + else + return 0; +} +int SceneViewer::getHGuideCount() { + if (viewGuideToggle.getStatus()) + return m_hRuler->getGuideCount(); + else + return 0; +} + +double SceneViewer::getVGuide(int index) { return m_vRuler->getGuide(index); } +double SceneViewer::getHGuide(int index) { return m_hRuler->getGuide(index); } + //----------------------------------------------------------------------------- void SceneViewer::initializeGL() { diff --git a/toonz/sources/toonz/sceneviewer.h b/toonz/sources/toonz/sceneviewer.h index 8e2c3b3..65da547 100644 --- a/toonz/sources/toonz/sceneviewer.h +++ b/toonz/sources/toonz/sceneviewer.h @@ -66,7 +66,8 @@ class SceneViewer final : public GLWidgetForHighDpi, Qt::MouseButton m_mouseButton; bool m_foregroundDrawing; - bool m_tabletEvent; + bool m_tabletEvent, m_tabletPressed, m_tabletReleased, m_tabletMove, + m_tabletActive; // used to handle wrong mouse drag events! bool m_buttonClicked, m_toolSwitched; bool m_shownOnce = false; @@ -138,6 +139,8 @@ class SceneViewer final : public GLWidgetForHighDpi, bool m_isLocator; bool m_isStyleShortcutSwitchable; + bool m_isBusyOnTabletMove; + // iwsw commented out temporarily // Ghibli3DLutUtil * m_ghibli3DLutUtil; public: @@ -235,6 +238,10 @@ public: void setIsLocator() { m_isLocator = true; } void setIsStyleShortcutSwitchable() { m_isStyleShortcutSwitchable = true; } + int getVGuideCount(); + int getHGuideCount(); + double getVGuide(int index); + double getHGuide(int index); public: // SceneViewer's gadget public functions @@ -283,6 +290,11 @@ protected: void mousePressEvent(QMouseEvent *event) override; void mouseReleaseEvent(QMouseEvent *event) override; void mouseDoubleClickEvent(QMouseEvent *event) override; + + void onPress(const TMouseEvent &event); + void onMove(const TMouseEvent &event); + void onRelease(const TMouseEvent &event); + void wheelEvent(QWheelEvent *) override; void keyPressEvent(QKeyEvent *event) override; void keyReleaseEvent(QKeyEvent *event) override; @@ -366,6 +378,10 @@ public slots: // delete preview-subcamera executed from context menu void doDeleteSubCamera(); + void resetTabletStatus(); + + void releaseBusyOnTabletMove() { m_isBusyOnTabletMove = false; } + signals: void onZoomChanged(); diff --git a/toonz/sources/toonz/sceneviewerevents.cpp b/toonz/sources/toonz/sceneviewerevents.cpp index 615e4ff..98767b5 100644 --- a/toonz/sources/toonz/sceneviewerevents.cpp +++ b/toonz/sources/toonz/sceneviewerevents.cpp @@ -74,29 +74,52 @@ int modifiers = 0; //----------------------------------------------------------------------------- void initToonzEvent(TMouseEvent &toonzEvent, QMouseEvent *event, - int widgetHeight, double pressure, bool isTablet, - bool isClick, int devPixRatio) { + int widgetHeight, double pressure, int devPixRatio) { toonzEvent.m_pos = TPoint(event->pos().x() * devPixRatio, widgetHeight - 1 - event->pos().y() * devPixRatio); - toonzEvent.m_pressure = isTablet ? int(255 * pressure) : 255; + toonzEvent.m_mousePos = event->pos(); + toonzEvent.m_pressure = 255; toonzEvent.setModifiers(event->modifiers() & Qt::ShiftModifier, event->modifiers() & Qt::AltModifier, event->modifiers() & Qt::ControlModifier); - toonzEvent.m_leftButtonPressed = (event->buttons() & Qt::LeftButton) != 0; + toonzEvent.m_buttons = event->buttons(); + toonzEvent.m_button = event->button(); + toonzEvent.m_isTablet = false; +} + +//----------------------------------------------------------------------------- + +void initToonzEvent(TMouseEvent &toonzEvent, QTabletEvent *event, + int widgetHeight, double pressure, int devPixRatio) { + toonzEvent.m_pos = TPoint(event->pos().x() * devPixRatio, + widgetHeight - 1 - event->pos().y() * devPixRatio); + toonzEvent.m_mousePos = event->pos(); + toonzEvent.m_pressure = int(255 * pressure); + + toonzEvent.setModifiers(event->modifiers() & Qt::ShiftModifier, + event->modifiers() & Qt::AltModifier, + event->modifiers() & Qt::ControlModifier); + + toonzEvent.m_buttons = event->buttons(); + toonzEvent.m_button = event->button(); + toonzEvent.m_isTablet = true; } //----------------------------------------------------------------------------- void initToonzEvent(TMouseEvent &toonzEvent, QKeyEvent *event) { toonzEvent.m_pos = TPoint(); + toonzEvent.m_mousePos = QPoint(); toonzEvent.m_pressure = 0; toonzEvent.setModifiers(event->modifiers() & Qt::ShiftModifier, event->modifiers() & Qt::AltModifier, event->modifiers() & Qt::ControlModifier); - toonzEvent.m_leftButtonPressed = false; + toonzEvent.m_buttons = Qt::NoButton; + toonzEvent.m_button = Qt::NoButton; + toonzEvent.m_isTablet = false; } //----------------------------------------------------------------------------- @@ -201,9 +224,11 @@ void SceneViewer::onButtonPressed(FlipConsole::EGadget button) { void SceneViewer::tabletEvent(QTabletEvent *e) { if (m_freezedStatus != NO_FREEZED) return; - m_tabletEvent = true; - m_pressure = e->pressure(); - + m_tabletEvent = true; + m_pressure = e->pressure(); + m_tabletPressed = false; + m_tabletReleased = false; + m_tabletMove = false; // Management of the Eraser pointer ToolHandle *toolHandle = TApp::instance()->getCurrentTool(); if (e->pointerType() == QTabletEvent::Eraser) { @@ -223,7 +248,58 @@ void SceneViewer::tabletEvent(QTabletEvent *e) { m_eraserPointerOn = false; } } - e->ignore(); + switch (e->type()) { + case QEvent::TabletPress: { + // In OSX tablet action may cause only tabletEvent, not followed by + // mousePressEvent. + // So call onPress here in order to enable processing. + // This separation done is only for the left Button (regular pen touch), + // because + // the current Qt seems to fail to catch the Wacom's button binding properly + // with QTabletEvent->button() when pressing middle or right button. + // So, in such case set m_tabletEvent = FALSE and let the mousePressEvent to + // work. + if (e->button() == Qt::LeftButton) { + TMouseEvent mouseEvent; + initToonzEvent(mouseEvent, e, height(), e->pressure(), getDevPixRatio()); + m_tabletPressed = true; + onPress(mouseEvent); + } else + m_tabletEvent = false; + } break; + case QEvent::TabletRelease: { + if (m_tabletActive) { + m_tabletReleased = true; + TMouseEvent mouseEvent; + initToonzEvent(mouseEvent, e, height(), e->pressure(), getDevPixRatio()); + onRelease(mouseEvent); + } else + m_tabletEvent = false; + } break; + // for now "TabletMove" will be called only when with some button. + // setTabletTracking(bool) will be introduced in Qt5.9 + case QEvent::TabletMove: { + if (m_tabletActive) { + QPoint curPos = e->pos() * getDevPixRatio(); + // It seems that the tabletEvent is called more often than mouseMoveEvent. + // So I fire the interval timer in order to limit the following process + // to be called in 50fps in maximum. + if (curPos != m_lastMousePos && !m_isBusyOnTabletMove) { + m_isBusyOnTabletMove = true; + TMouseEvent mouseEvent; + initToonzEvent(mouseEvent, e, height(), e->pressure(), + getDevPixRatio()); + m_tabletMove = true; + QTimer::singleShot(20, this, SLOT(releaseBusyOnTabletMove())); + onMove(mouseEvent); + } + } else + m_tabletEvent = false; + } break; + default: + break; + } + e->accept(); } //----------------------------------------------------------------------------- @@ -272,9 +348,30 @@ void SceneViewer::enterEvent(QEvent *) { //----------------------------------------------------------------------------- void SceneViewer::mouseMoveEvent(QMouseEvent *event) { + // if this is called just after tabletEvent, skip the execution + if (m_tabletEvent) return; + + // there are three cases to come here : + // 1. on mouse is moved (no tablet is used) + // 2. on tablet is moved, with middle or right button is pressed + // 3. on tablet is moved, BUT tabletEvent was not called + // 4. on tablet is moved without pen touching (i.e. floating move) + // the case 3 sometimes occurs on OSX. (reporteed in QTBUG-26532 for Qt4, but + // not confirmed in Qt5) + // the case 4 can be removed once start using Qt5.9 and call + // setTabletTracking(true). + + TMouseEvent mouseEvent; + initToonzEvent(mouseEvent, event, height(), 1.0, getDevPixRatio()); + onMove(mouseEvent); +} + +//----------------------------------------------------------------------------- + +void SceneViewer::onMove(const TMouseEvent &event) { if (m_freezedStatus != NO_FREEZED) return; - QPoint curPos = event->pos() * getDevPixRatio(); + QPoint curPos = event.mousePos() * getDevPixRatio(); bool cursorSet = false; m_lastMousePos = curPos; @@ -340,9 +437,7 @@ void SceneViewer::mouseMoveEvent(QMouseEvent *event) { } // if the middle mouse button is pressed while dragging, then do panning - Qt::MouseButtons mousebuttons; - mousebuttons = event->buttons(); - if (mousebuttons & Qt::MidButton) { + if (event.buttons() & Qt::MidButton) { // panning QPoint p = curPos - m_pos; if (m_pos == QPoint(0, 0) && p.manhattanLength() > 300) return; @@ -357,9 +452,6 @@ void SceneViewer::mouseMoveEvent(QMouseEvent *event) { return; } tool->setViewer(this); - TMouseEvent toonzEvent; - initToonzEvent(toonzEvent, event, height(), m_pressure, m_tabletEvent, - false, getDevPixRatio()); TPointD worldPos = winToWorld(curPos); TPointD pos = tool->getMatrix().inv() * worldPos; @@ -376,31 +468,37 @@ void SceneViewer::mouseMoveEvent(QMouseEvent *event) { // qDebug() << "mouseMoveEvent. " << (m_tabletEvent?"tablet":"mouse") // << " pressure=" << m_pressure << " mouseButton=" << m_mouseButton // << " buttonClicked=" << m_buttonClicked; - if ((m_tabletEvent && m_pressure > 0) || m_mouseButton == Qt::LeftButton) { + + // separate tablet events from mouse events + // don't perform a drag event if tablet not active + if (m_tabletActive && !m_tabletMove) return; + if (m_tabletEvent && m_tabletActive && m_tabletMove) { + tool->leftButtonDrag(pos, event); + } + + else if (m_mouseButton == Qt::LeftButton) { // sometimes the mousePressedEvent is postponed to a wrong mouse move // event! - if (m_buttonClicked && !m_toolSwitched) - tool->leftButtonDrag(pos, toonzEvent); + if (m_buttonClicked && !m_toolSwitched) tool->leftButtonDrag(pos, event); } else if (m_pressure == 0) { - tool->mouseMove(pos, toonzEvent); - // m_tabletEvent=false; + tool->mouseMove(pos, event); } if (!cursorSet) setToolCursor(this, tool->getCursorId()); - m_pos = curPos; + m_pos = curPos; + m_tabletMove = false; } else if (m_mouseButton == Qt::MidButton) { - if ((event->buttons() & Qt::MidButton) == 0) - m_mouseButton = Qt::NoButton; - else - // scrub with shift and middle click - if (event->modifiers() & Qt::ShiftModifier) { + if ((event.buttons() & Qt::MidButton) == 0) m_mouseButton = Qt::NoButton; + // scrub with shift and middle click + else if (event.isShiftPressed()) { if (curPos.x() > m_pos.x()) { CommandManager::instance()->execute("MI_NextFrame"); } else if (curPos.x() < m_pos.x()) { CommandManager::instance()->execute("MI_PrevFrame"); } - } else + } else { // panning panQt(curPos - m_pos); + } m_pos = curPos; return; @@ -410,6 +508,24 @@ void SceneViewer::mouseMoveEvent(QMouseEvent *event) { //----------------------------------------------------------------------------- void SceneViewer::mousePressEvent(QMouseEvent *event) { + // if this is called just after tabletEvent, skip the execution + if (m_tabletEvent) return; + + // For now OSX has a critical problem that mousePressEvent is called just + // after releasing the stylus, which causes the irregular stroke while + // float-moving. + // In such case resetTabletStatus() will be called on + // QEvent::TabletLeaveProximity + // and will cancel the onPress operation called here. + + TMouseEvent mouseEvent; + initToonzEvent(mouseEvent, event, height(), 1.0, getDevPixRatio()); + onPress(mouseEvent); +} + +//----------------------------------------------------------------------------- + +void SceneViewer::onPress(const TMouseEvent &event) { // evita i press ripetuti if (m_buttonClicked) return; m_buttonClicked = true; @@ -418,16 +534,15 @@ void SceneViewer::mousePressEvent(QMouseEvent *event) { if (m_mouseButton != Qt::NoButton) return; - m_pos = event->pos() * getDevPixRatio(); - m_mouseButton = event->button(); + m_pos = event.mousePos() * getDevPixRatio(); + m_mouseButton = event.button(); // when using tablet, avoid unexpected drawing behavior occurs when // middle-click - Qt::MouseButtons mousebuttons; - mousebuttons = event->buttons(); if (m_tabletEvent && m_mouseButton == Qt::MidButton && - (mousebuttons | Qt::LeftButton)) + event.isLeftButtonPressed()) { return; + } if (is3DView() && m_current3DDevice != NONE && m_mouseButton == Qt::LeftButton) @@ -473,12 +588,6 @@ void SceneViewer::mousePressEvent(QMouseEvent *event) { tool->setViewer(this); } - TMouseEvent toonzEvent; - if (m_pressure > 0 && !m_tabletEvent) m_tabletEvent = true; - - if (TApp::instance()->isPenCloseToTablet()) m_tabletEvent = true; - initToonzEvent(toonzEvent, event, height(), m_pressure, m_tabletEvent, true, - getDevPixRatio()); // if(!m_tabletEvent) qDebug() << "-----------------MOUSE PRESS 'PURO'. // POSSIBILE EMBOLO"; TPointD pos = tool->getMatrix().inv() * winToWorld(m_pos); @@ -488,16 +597,34 @@ void SceneViewer::mousePressEvent(QMouseEvent *event) { pos.x /= m_dpiScale.x; pos.y /= m_dpiScale.y; } - if (m_mouseButton == Qt::LeftButton) { + // separate tablet and mouse events + if (m_tabletEvent && m_tabletPressed) { + m_tabletActive = true; + tool->leftButtonDown(pos, event); + } else if (m_mouseButton == Qt::LeftButton) { TApp::instance()->getCurrentTool()->setToolBusy(true); - tool->leftButtonDown(pos, toonzEvent); + tool->leftButtonDown(pos, event); } - if (m_mouseButton == Qt::RightButton) tool->rightButtonDown(pos, toonzEvent); + if (m_mouseButton == Qt::RightButton) tool->rightButtonDown(pos, event); + m_tabletPressed = false; } //----------------------------------------------------------------------------- void SceneViewer::mouseReleaseEvent(QMouseEvent *event) { + // if this is called just after tabletEvent, skip the execution + if (m_tabletEvent) { + m_tabletEvent = false; + return; + } + + TMouseEvent mouseEvent; + initToonzEvent(mouseEvent, event, height(), 1.0, getDevPixRatio()); + onRelease(mouseEvent); +} +//----------------------------------------------------------------------------- + +void SceneViewer::onRelease(const TMouseEvent &event) { // evita i release ripetuti if (!m_buttonClicked) return; m_buttonClicked = false; @@ -511,8 +638,10 @@ void SceneViewer::mouseReleaseEvent(QMouseEvent *event) { if (m_freezedStatus != NO_FREEZED) return; - if (m_mouseButton != event->button()) return; + if (m_mouseButton != event.button()) return; + // reject if tablet was active and the up button is not actually the pen. + if (m_tabletActive && !m_tabletReleased) return; if (m_current3DDevice != NONE) { m_mouseButton = Qt::NoButton; m_tabletEvent = false; @@ -527,7 +656,7 @@ void SceneViewer::mouseReleaseEvent(QMouseEvent *event) { } if (m_mouseButton == Qt::LeftButton && m_editPreviewSubCamera) { - if (!PreviewSubCameraManager::instance()->mouseReleaseEvent(this, event)) + if (!PreviewSubCameraManager::instance()->mouseReleaseEvent(this)) goto quit; } @@ -542,11 +671,8 @@ void SceneViewer::mouseReleaseEvent(QMouseEvent *event) { tool->setViewer(this); { - TMouseEvent toonzEvent; - initToonzEvent(toonzEvent, event, height(), m_pressure, m_tabletEvent, - false, getDevPixRatio()); - TPointD pos = - tool->getMatrix().inv() * winToWorld(event->pos() * getDevPixRatio()); + TPointD pos = tool->getMatrix().inv() * + winToWorld(event.mousePos() * getDevPixRatio()); TObjectHandle *objHandle = TApp::instance()->getCurrentObject(); if (tool->getToolType() & TTool::LevelTool && !objHandle->isSpline()) { @@ -554,17 +680,43 @@ void SceneViewer::mouseReleaseEvent(QMouseEvent *event) { pos.y /= m_dpiScale.y; } - if (m_mouseButton == Qt::LeftButton) { - if (!m_toolSwitched) tool->leftButtonUp(pos, toonzEvent); + if (m_mouseButton == Qt::LeftButton || m_tabletReleased) { + if (!m_toolSwitched) tool->leftButtonUp(pos, event); TApp::instance()->getCurrentTool()->setToolBusy(false); } } quit: + m_mouseButton = Qt::NoButton; + m_tabletPressed = false; + m_tabletActive = false; + m_tabletReleased = false; + m_tabletMove = false; + m_pressure = 0; + // Leave m_tabletEvent as-is in order to check whether the onRelease is called + // from tabletEvent or not in mouseReleaseEvent. +} - m_mouseButton = Qt::NoButton; - m_tabletEvent = false; - m_pressure = 0; +//----------------------------------------------------------------------------- +// on OSX, there is a critical bug that SceneViewer::mousePressEvent is called +// when leaving the stylus and it causes unwanted stroke drawn while +// hover-moving of the pen. +// When QEvent::TabletLeaveProximity is detected, call this function +// in order to force initializing such irregular mouse press. +// NOTE: For now QEvent::TabletLeaveProximity is NOT detected on Windows. See +// QTBUG-53628. +void SceneViewer::resetTabletStatus() { + if (!m_buttonClicked) return; + m_mouseButton = Qt::NoButton; + m_tabletEvent = false; + m_tabletPressed = false; + m_tabletActive = false; + m_tabletReleased = false; + m_tabletMove = false; + m_pressure = 0; + m_buttonClicked = false; + if (TApp::instance()->getCurrentTool()->isToolBusy()) + TApp::instance()->getCurrentTool()->setToolBusy(false); } //----------------------------------------------------------------------------- @@ -667,42 +819,42 @@ bool SceneViewer::event(QEvent *e) { } /* -switch(e->type()) -{ -case QEvent::Enter: -qDebug() << "************************** Enter"; -break; -case QEvent::Leave: -qDebug() << "************************** Leave"; -break; - -case QEvent::TabletPress: -qDebug() << "************************** TabletPress" << m_pressure; -break; -case QEvent::TabletMove: -qDebug() << "************************** TabletMove"; -break; -case QEvent::TabletRelease: -qDebug() << "************************** TabletRelease"; -break; - - -case QEvent::MouseButtonPress: -qDebug() << "**************************MouseButtonPress" << m_pressure << " " -<< m_tabletEvent; -break; -case QEvent::MouseMove: -qDebug() << "**************************MouseMove" << m_pressure; -break; -case QEvent::MouseButtonRelease: -qDebug() << "**************************MouseButtonRelease"; -break; - -case QEvent::MouseButtonDblClick: -qDebug() << "============================== MouseButtonDblClick"; -break; -} -*/ + switch(e->type()) + { + case QEvent::Enter: + qDebug() << "************************** Enter"; + break; + case QEvent::Leave: + qDebug() << "************************** Leave"; + break; + + case QEvent::TabletPress: + qDebug() << "************************** TabletPress" << m_pressure; + break; + case QEvent::TabletMove: + qDebug() << "************************** TabletMove"; + break; + case QEvent::TabletRelease: + qDebug() << "************************** TabletRelease"; + break; + + + case QEvent::MouseButtonPress: + qDebug() << "**************************MouseButtonPress" << m_pressure << " " + << m_tabletEvent; + break; + case QEvent::MouseMove: + qDebug() << "**************************MouseMove" << m_pressure; + break; + case QEvent::MouseButtonRelease: + qDebug() << "**************************MouseButtonRelease"; + break; + + case QEvent::MouseButtonDblClick: + qDebug() << "============================== MouseButtonDblClick"; + break; + } + */ return QGLWidget::event(e); } @@ -1004,8 +1156,7 @@ void SceneViewer::mouseDoubleClickEvent(QMouseEvent *event) { TTool *tool = TApp::instance()->getCurrentTool()->getTool(); if (!tool || !tool->isEnabled()) return; TMouseEvent toonzEvent; - initToonzEvent(toonzEvent, event, height(), m_pressure, m_tabletEvent, true, - getDevPixRatio()); + initToonzEvent(toonzEvent, event, height(), 1.0, getDevPixRatio()); TPointD pos = tool->getMatrix().inv() * winToWorld(event->pos() * getDevPixRatio()); TObjectHandle *objHandle = TApp::instance()->getCurrentObject(); diff --git a/toonz/sources/toonz/subcameramanager.cpp b/toonz/sources/toonz/subcameramanager.cpp index 0b53d45..3975403 100644 --- a/toonz/sources/toonz/subcameramanager.cpp +++ b/toonz/sources/toonz/subcameramanager.cpp @@ -115,11 +115,11 @@ TPoint PreviewSubCameraManager::cameraToWin(SceneViewer *viewer, //---------------------------------------------------------------------- bool PreviewSubCameraManager::mousePressEvent(SceneViewer *viewer, - QMouseEvent *event) { + const TMouseEvent &event) { if (viewer->is3DView()) return true; m_mousePressed = true; - m_mousePressPos = event->pos() * viewer->getDevPixRatio(); + m_mousePressPos = event.mousePos() * viewer->getDevPixRatio(); m_dragType = getSubCameraDragEnum(viewer, m_mousePressPos); if (bitwiseExclude(m_dragType, OUTER)) @@ -131,10 +131,10 @@ bool PreviewSubCameraManager::mousePressEvent(SceneViewer *viewer, //---------------------------------------------------------------------- bool PreviewSubCameraManager::mouseMoveEvent(SceneViewer *viewer, - QMouseEvent *event) { + const TMouseEvent &event) { if (viewer->is3DView()) return true; - QPoint curPos(event->pos() * viewer->getDevPixRatio()); - if (event->buttons() == Qt::LeftButton) { + QPoint curPos(event.mousePos() * viewer->getDevPixRatio()); + if (event.buttons() == Qt::LeftButton) { if (!bitwiseContains(m_dragType, INNER)) { if (abs(curPos.x() - m_mousePressPos.x()) > 10 || abs(curPos.y() - m_mousePressPos.y()) > 10) @@ -230,13 +230,12 @@ bool PreviewSubCameraManager::mouseMoveEvent(SceneViewer *viewer, } // In case, perform the pan - return event->buttons() == Qt::MidButton; + return event.buttons() == Qt::MidButton; } //---------------------------------------------------------------------- -bool PreviewSubCameraManager::mouseReleaseEvent(SceneViewer *viewer, - QMouseEvent *event) { +bool PreviewSubCameraManager::mouseReleaseEvent(SceneViewer *viewer) { if (viewer->is3DView()) return true; m_mousePressed = false; diff --git a/toonz/sources/toonz/subcameramanager.h b/toonz/sources/toonz/subcameramanager.h index e77e9d5..44c42b0 100644 --- a/toonz/sources/toonz/subcameramanager.h +++ b/toonz/sources/toonz/subcameramanager.h @@ -99,9 +99,9 @@ public: TRectD getEditingCameraInterestStageRect() const; - bool mousePressEvent(SceneViewer *viewer, QMouseEvent *event) override; - bool mouseMoveEvent(SceneViewer *viewer, QMouseEvent *event) override; - bool mouseReleaseEvent(SceneViewer *viewer, QMouseEvent *event) override; + bool mousePressEvent(SceneViewer *viewer, const TMouseEvent &event); + bool mouseMoveEvent(SceneViewer *viewer, const TMouseEvent &event); + bool mouseReleaseEvent(SceneViewer *viewer); void deleteSubCamera(SceneViewer *viewer); diff --git a/toonz/sources/toonz/tapp.cpp b/toonz/sources/toonz/tapp.cpp index 5988f2c..8318336 100644 --- a/toonz/sources/toonz/tapp.cpp +++ b/toonz/sources/toonz/tapp.cpp @@ -726,6 +726,7 @@ bool TApp::eventFilter(QObject *watched, QEvent *e) { qApp->processEvents(); m_isPenCloseToTablet = false; + emit tabletLeft(); } return false; // I want just peek at the event. It must be processed anyway. diff --git a/toonz/sources/toonz/tapp.h b/toonz/sources/toonz/tapp.h index e057482..22e6ee6 100644 --- a/toonz/sources/toonz/tapp.h +++ b/toonz/sources/toonz/tapp.h @@ -232,6 +232,16 @@ protected slots: void onToolEditingFinished(); void onStartAutoSave(); void onStopAutoSave(); + +signals: + // on OSX, there is a critical bug that SceneViewer::mousePressEvent is called + // when leaving the stylus and it causes unwanted stroke drawn while + // hover-moving of the pen. + // This signal is to detect tablet leave and force initializing such irregular + // mouse press. + // NOTE: For now QEvent::TabletLeaveProximity is NOT detected on Windows. See + // QTBUG-53628. + void tabletLeft(); }; #endif // TAPP_H diff --git a/toonz/sources/toonz/toonz.qrc b/toonz/sources/toonz/toonz.qrc index bb5bcbe..bf68852 100644 --- a/toonz/sources/toonz/toonz.qrc +++ b/toonz/sources/toonz/toonz.qrc @@ -177,6 +177,7 @@ Resources/nextkey_over.png Resources/no_specialstyle.png Resources/no_vectorbrush.png + Resources/no_mypaintbrush.png Resources/openedfolder.png Resources/options.png Resources/options_click.png diff --git a/toonz/sources/toonz/xshcellviewer.cpp b/toonz/sources/toonz/xshcellviewer.cpp index 5f44e44..5ce8a2a 100644 --- a/toonz/sources/toonz/xshcellviewer.cpp +++ b/toonz/sources/toonz/xshcellviewer.cpp @@ -1339,13 +1339,13 @@ void CellArea::drawLevelCell(QPainter &p, int row, int col, bool isReference) { if (yetToCleanupCell) // ORIENTATION: what's this? { if (o->isVerticalTimeline()) - p.fillRect( - rect.adjusted(rect.width() / 2, 0, 0, 0), - (isSelected) ? SelectedFullcolorColumnColor : FullcolorColumnColor); + p.fillRect(rect.adjusted(rect.width() / 2, 0, 0, 0), + (isSelected) ? m_viewer->getSelectedFullcolorColumnColor() + : m_viewer->getFullcolorColumnColor()); else - p.fillRect( - rect.adjusted(0, rect.height() / 2, 0, 0), - (isSelected) ? SelectedFullcolorColumnColor : FullcolorColumnColor); + p.fillRect(rect.adjusted(0, rect.height() / 2, 0, 0), + (isSelected) ? m_viewer->getSelectedFullcolorColumnColor() + : m_viewer->getFullcolorColumnColor()); } bool isLastRow = nextCell.isEmpty() || diff --git a/toonz/sources/toonzlib/CMakeLists.txt b/toonz/sources/toonzlib/CMakeLists.txt index 6ddad09..9bc91f3 100644 --- a/toonz/sources/toonzlib/CMakeLists.txt +++ b/toonz/sources/toonzlib/CMakeLists.txt @@ -35,6 +35,9 @@ set(MOC_HEADERS ../include/toonz/logger.h ../include/toonz/movierenderer.h ../include/toonz/multimediarenderer.h + ../include/toonz/mypaint.h + ../include/toonz/mypainthelpers.hpp + ../include/toonz/mypaintbrushstyle.h ../include/toonz/namebuilder.h ../include/toonz/Naa2TlvConverter.h ../include/toonz/observer.h @@ -191,6 +194,7 @@ set(SOURCES logger.cpp movierenderer.cpp multimediarenderer.cpp + mypaintbrushstyle.cpp namebuilder.cpp Naa2TlvConverter.cpp observer.cpp @@ -348,7 +352,7 @@ include_directories( if(BUILD_ENV_MSVC) target_link_libraries(toonzlib Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Script - ${GLUT_LIB} ${GL_LIB} vfw32.lib + ${GLUT_LIB} ${GL_LIB} ${MYPAINT_LIB_LDFLAGS} vfw32.lib tnzcore tnzbase tnzext ) elseif(BUILD_ENV_APPLE) @@ -357,6 +361,7 @@ elseif(BUILD_ENV_APPLE) ${CMAKE_CURRENT_BINARY_DIR}/../tnzbase/libtnzbase.dylib ${CMAKE_CURRENT_BINARY_DIR}/../tnzext/libtnzext.dylib ${USB_LIB} + ${MYPAINT_LIB_LDFLAGS} ) target_link_libraries(toonzlib Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Script ${GLUT_LIB} ${GL_LIB} ${EXTRA_LIBS}) @@ -367,5 +372,5 @@ elseif(BUILD_ENV_UNIXLIKE) set(EXTRA_LIBS ${EXTRA_LIBS} -lvfw32) endif() - target_link_libraries(toonzlib Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Script ${GLUT_LIB} ${GL_LIB} ${EXTRA_LIBS}) + target_link_libraries(toonzlib Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Script ${GLUT_LIB} ${GL_LIB} ${EXTRA_LIBS} ${MYPAINT_LIB_LDFLAGS}) endif() diff --git a/toonz/sources/toonzlib/mypaintbrushstyle.cpp b/toonz/sources/toonzlib/mypaintbrushstyle.cpp new file mode 100644 index 0000000..1cc985e --- /dev/null +++ b/toonz/sources/toonzlib/mypaintbrushstyle.cpp @@ -0,0 +1,278 @@ + +#include + +#include + +#include "tfilepath_io.h" +#include "timage_io.h" +#include "trop.h" +#include "tsystem.h" +#include "tvectorimage.h" +#include "tpixelutils.h" +#include "toonz/toonzscene.h" + +#include "toonz/mypaintbrushstyle.h" + + +//************************************************************************************* +// TMyPaintBrushStyle implementation +//************************************************************************************* + +TMyPaintBrushStyle::TMyPaintBrushStyle() + { } + +//----------------------------------------------------------------------------- + +TMyPaintBrushStyle::TMyPaintBrushStyle(const TFilePath &path) { + loadBrush(path); +} + +//----------------------------------------------------------------------------- + +TMyPaintBrushStyle::TMyPaintBrushStyle(const TMyPaintBrushStyle &other): + TColorStyle(other), + m_path (other.m_path), + m_fullpath (other.m_fullpath), + m_brushOriginal (other.m_brushOriginal), + m_brushModified (other.m_brushModified), + m_preview (other.m_preview), + m_color (other.m_color), + m_baseValues (other.m_baseValues) + { } + + +//----------------------------------------------------------------------------- + +TMyPaintBrushStyle::~TMyPaintBrushStyle() + { } + +//----------------------------------------------------------------------------- + +TColorStyle& TMyPaintBrushStyle::copy(const TColorStyle &other) { + const TMyPaintBrushStyle *otherBrushStyle = + dynamic_cast(&other); + if (otherBrushStyle) { + m_path = otherBrushStyle->m_path; + m_fullpath = otherBrushStyle->m_fullpath; + m_brushOriginal = otherBrushStyle->m_brushOriginal; + m_brushModified = otherBrushStyle->m_brushModified; + m_preview = otherBrushStyle->m_preview; + m_baseValues = otherBrushStyle->m_baseValues; + } + assignBlend(other, other, 0.0); + return *this; +} + +//----------------------------------------------------------------------------- + +QString TMyPaintBrushStyle::getDescription() const + { return "MyPaintBrushStyle"; } + +//----------------------------------------------------------------------------- + +std::string TMyPaintBrushStyle::getBrushType() + { return "myb"; } + +//----------------------------------------------------------------------------- + +TFilePathSet TMyPaintBrushStyle::getBrushesDirs() { + TFilePathSet paths; + paths.push_back(m_libraryDir + "mypaint brushes"); + QStringList genericLocations = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation); + for(QStringList::iterator i = genericLocations.begin(); i != genericLocations.end(); ++i) + paths.push_back(TFilePath(*i) + "mypaint" + "brushes"); + return paths; +} + +//----------------------------------------------------------------------------- + +TFilePath TMyPaintBrushStyle::decodePath(const TFilePath &path) const { + if (path.isAbsolute()) + return path; + + if (m_currentScene) { + TFilePath p = m_currentScene->decodeFilePath(path); + TFileStatus fs(p); + if (fs.doesExist() && !fs.isDirectory()) + return p; + } + + TFilePathSet paths = getBrushesDirs(); + for(TFilePathSet::iterator i = paths.begin(); i != paths.end(); ++i) { + TFilePath p = *i + path; + TFileStatus fs(p); + if (fs.doesExist() && !fs.isDirectory()) + return p; + } + + return path; +} + +//----------------------------------------------------------------------------- + +void TMyPaintBrushStyle::loadBrush(const TFilePath &path) { + m_path = path; + m_fullpath = decodePath(path); + m_brushOriginal.fromDefaults(); + + Tifstream is(m_fullpath); + if (is) { + std::string str; + str.assign( std::istreambuf_iterator(is), std::istreambuf_iterator() ); + m_brushOriginal.fromString(str); + } + + m_brushModified = m_brushOriginal; + std::map baseValuesCopy; + baseValuesCopy.swap(m_baseValues); + for(std::map::const_iterator i = baseValuesCopy.begin(); i != baseValuesCopy.end(); ++i) + setBaseValue(i->first, i->second); + + TFilePath preview_path = m_fullpath.getParentDir() + (m_fullpath.getWideName() + L"_prev.png"); + TImageReader::load(preview_path, m_preview); + + invalidateIcon(); +} + +//----------------------------------------------------------------------------- + +void TMyPaintBrushStyle::setBaseValue(MyPaintBrushSetting id, bool enable, float value) { + float def = m_brushOriginal.getBaseValue(id); + if (enable && fabsf(value - def) > 0.01) { + m_baseValues[id] = value; + m_brushModified.setBaseValue(id, value); + } else { + m_baseValues.erase(id); + m_brushModified.setBaseValue(id, def); + } +} + +//----------------------------------------------------------------------------- + +void TMyPaintBrushStyle::resetBaseValues() { + for(int i = 0; i < MYPAINT_BRUSH_SETTINGS_COUNT; ++i) + setBaseValueEnabled((MyPaintBrushSetting)i, false); +} + +//----------------------------------------------------------------------------- + +void TMyPaintBrushStyle::makeIcon(const TDimension &d) { + TFilePath path = m_fullpath.getParentDir() + (m_fullpath.getWideName() + L"_prev.png"); + if (!m_preview) { + m_icon = TRaster32P(d); + m_icon->fill(TPixel32::Red); + } else + if (m_preview->getSize() == d) { + m_icon = m_preview; + } else { + m_icon = TRaster32P(d); + double sx = (double)d.lx/(double)m_preview->getLx(); + double sy = (double)d.ly/(double)m_preview->getLy(); + TRop::resample(m_icon, m_preview, TScale(sx, sy)); + } + + // paint color marker + if (d.lx > 0 && d.ly > 0) { + int size = std::min( 1 + std::min(d.lx, d.ly)*2/3, + 1 + std::max(d.lx, d.ly)/2 ); + TPixel32 color = getMainColor(); + for(int y = 0; y < size; ++y) { + TPixel32 *p = m_icon->pixels(d.ly - y - 1); + TPixel32 *endp = p + size - y - 1; + for( ;p != endp; ++p) + *p = color; + *p = blend(*p, color, 0.5); + } + } +} + +//------------------------------------------------------------ + +void TMyPaintBrushStyle::loadData(TInputStreamInterface &is) { + std::string path; + is >> path; + is >> m_color; + loadBrush(TFilePath(path)); + + int baseSettingsCount = 0; + is >> baseSettingsCount; + for(int i = 0; i < baseSettingsCount; ++i) { + std::string key; + double value = 0.0; + int inputsCount = 0; + is >> key; + is >> value; + const mypaint::Setting *setting = mypaint::Setting::findByKey(key); + if (setting) setBaseValue(setting->id, value); + } +} + +//----------------------------------------------------------------------------- + +void TMyPaintBrushStyle::saveData(TOutputStreamInterface &os) const { + std::wstring wstr = m_path.getWideString(); + std::string str; + str.assign(wstr.begin(), wstr.end()); + os << str; + os << m_color; + + os << (int)m_baseValues.size(); + for(std::map::const_iterator i = m_baseValues.begin(); i != m_baseValues.end(); ++i) { + os << mypaint::Setting::byId(i->first).key; + os << (double)i->second; + } +} + +//----------------------------------------------------------------------------- + +int TMyPaintBrushStyle::getParamCount() const + { return MYPAINT_BRUSH_SETTINGS_COUNT; } + +//----------------------------------------------------------------------------- + +QString TMyPaintBrushStyle::getParamNames(int index) const + { return QString::fromUtf8(mypaint::Setting::byId((MyPaintBrushSetting)index).name.c_str()); } + +//----------------------------------------------------------------------------- + +TColorStyle::ParamType TMyPaintBrushStyle::getParamType(int index) const + { return DOUBLE; } + +//----------------------------------------------------------------------------- + +bool TMyPaintBrushStyle::hasParamDefault(int index) const + { return true; } + +//----------------------------------------------------------------------------- + +void TMyPaintBrushStyle::setParamDefault(int index) + { setBaseValueEnabled((MyPaintBrushSetting)index, false); } + +//----------------------------------------------------------------------------- + +bool TMyPaintBrushStyle::isParamDefault(int index) const + { return getBaseValueEnabled((MyPaintBrushSetting)index); } + +//----------------------------------------------------------------------------- + +void TMyPaintBrushStyle::getParamRange(int index, double &min, double &max) const { + const mypaint::Setting &setting = mypaint::Setting::byId((MyPaintBrushSetting)index); + min = setting.min; + max = setting.max; +} + +//----------------------------------------------------------------------------- + +void TMyPaintBrushStyle::setParamValue(int index, double value) + { setBaseValue((MyPaintBrushSetting)index, value); } + +//----------------------------------------------------------------------------- + +double TMyPaintBrushStyle::getParamValue(double_tag, int index) const + { return getBaseValue((MyPaintBrushSetting)index); } + +//----------------------------------------------------------------------------- + +namespace { + TColorStyle::Declaration mypaintBrushStyle(new TMyPaintBrushStyle()); +} diff --git a/toonz/sources/toonzlib/preferences.cpp b/toonz/sources/toonzlib/preferences.cpp index a2f92a7..8bae1a6 100644 --- a/toonz/sources/toonzlib/preferences.cpp +++ b/toonz/sources/toonzlib/preferences.cpp @@ -249,12 +249,13 @@ Preferences::Preferences() , m_shmall(-1) , m_shmmni(-1) , m_onionPaperThickness(50) - , m_currentLanguage(0) - , m_currentStyleSheet(0) + , m_currentLanguage("English") + , m_currentStyleSheet("Astral_072_Dark") , m_undoMemorySize(100) , m_dragCellsBehaviour(0) , m_lineTestFpsCapture(25) , m_defLevelType(0) + , m_vectorSnappingTarget(SnapAll) , m_autocreationType(1) , m_autoExposeEnabled(true) , m_autoCreateEnabled(true) @@ -325,8 +326,11 @@ Preferences::Preferences() TFilePath layoutDir = ToonzFolder::getMyModuleDir(); TFilePath savePath = layoutDir + TFilePath("preferences.ini"); + // If no personal settings found, then try to load template settings + TFilePath loadPath = ToonzFolder::getModuleFile(TFilePath("preferences.ini")); + m_settings.reset(new QSettings( - QString::fromStdWString(savePath.getWideString()), QSettings::IniFormat)); + QString::fromStdWString(loadPath.getWideString()), QSettings::IniFormat)); getValue(*m_settings, "autoExposeEnabled", m_autoExposeEnabled); getValue(*m_settings, "autoCreateEnabled", m_autoCreateEnabled); @@ -359,7 +363,7 @@ Preferences::Preferences() getValue(*m_settings, "autosavePeriod", m_autosavePeriod); getValue(*m_settings, "taskchunksize", m_chunkSize); getValue(*m_settings, "xsheetStep", m_xsheetStep); - + getValue(*m_settings, "vectorSnappingTarget", m_vectorSnappingTarget); int r = 0, g = 255, b = 0; getValue(*m_settings, "frontOnionColor.r", r); getValue(*m_settings, "frontOnionColor.g", g); @@ -459,7 +463,7 @@ Preferences::Preferences() // load languages TFilePath lang_path = TEnv::getConfigDir() + "loc"; TFilePathSet lang_fpset; - m_languageMaps[0] = "English"; + m_languageList.append("English"); // m_currentLanguage=0; try { TFileStatus langPathFs(lang_path); @@ -473,8 +477,8 @@ Preferences::Preferences() ++i; if (newPath == lang_path) continue; if (TFileStatus(newPath).isDirectory()) { - QString string = QString::fromStdWString(newPath.getWideName()); - m_languageMaps[i] = string; + QString string = QString::fromStdWString(newPath.getWideName()); + m_languageList.append(string); } } } catch (...) { @@ -490,13 +494,7 @@ Preferences::Preferences() ++i; if (newPath == path) continue; QString fpName = QString::fromStdWString(newPath.getWideName()); -#ifdef MACOSX - QString string = fpName + QString("/") + fpName + QString("_mac.qss"); -#else - QString string = fpName + QString("/") + fpName + QString(".qss"); -#endif - if (fpName == QString("standard")) m_currentStyleSheet = i; - m_styleSheetMaps[i] = "file:///" + path.getQString() + "/" + string; + m_styleSheetList.append(fpName); } } catch (...) { } @@ -535,8 +533,15 @@ Preferences::Preferences() setCurrentRoomChoice(0); } - getValue(*m_settings, "CurrentLanguage", m_currentLanguage); - getValue(*m_settings, "CurrentStyleSheet", m_currentStyleSheet); + QString currentLanguage; + currentLanguage = m_settings->value("CurrentLanguageName").toString(); + if (!currentLanguage.isEmpty() && m_languageList.contains(currentLanguage)) + m_currentLanguage = currentLanguage; + QString currentStyleSheet; + currentStyleSheet = m_settings->value("CurrentStyleSheetName").toString(); + if (!currentStyleSheet.isEmpty() && + m_styleSheetList.contains(currentStyleSheet)) + m_currentStyleSheet = currentStyleSheet; getValue(*m_settings, "DragCellsBehaviour", m_dragCellsBehaviour); @@ -598,6 +603,16 @@ Preferences::Preferences() m_inputCellsWithoutDoubleClickingEnabled); getValue(*m_settings, "importPolicy", m_importPolicy); getValue(*m_settings, "watchFileSystemEnabled", m_watchFileSystem); + + // in case there is no personal settings + if (savePath != loadPath) { + // copy the template settins to the personal one + if (TFileStatus(loadPath).doesExist()) + TSystem::copyFile(savePath, loadPath); + m_settings.reset( + new QSettings(QString::fromStdWString(savePath.getWideString()), + QSettings::IniFormat)); + } } //----------------------------------------------------------------- @@ -1159,49 +1174,64 @@ void Preferences::setUndoMemorySize(int memorySize) { //----------------------------------------------------------------- QString Preferences::getCurrentLanguage() const { - return m_languageMaps[m_currentLanguage]; + if (m_languageList.contains(m_currentLanguage)) return m_currentLanguage; + // If no valid option selected, then return English + return m_languageList[0]; } //----------------------------------------------------------------- QString Preferences::getLanguage(int index) const { - return m_languageMaps[index]; + return m_languageList[index]; } //----------------------------------------------------------------- -int Preferences::getLanguageCount() const { return (int)m_languageMaps.size(); } +int Preferences::getLanguageCount() const { return (int)m_languageList.size(); } //----------------------------------------------------------------- -void Preferences::setCurrentLanguage(int currentLanguage) { +void Preferences::setCurrentLanguage(const QString ¤tLanguage) { m_currentLanguage = currentLanguage; - m_settings->setValue("CurrentLanguage", m_currentLanguage); + m_settings->setValue("CurrentLanguageName", m_currentLanguage); +} + +//----------------------------------------------------------------- + +QString Preferences::getCurrentStyleSheetName() const { + if (m_styleSheetList.contains(m_currentStyleSheet)) + return m_currentStyleSheet; + // If no valid option selected, then return the first oprion + return m_styleSheetList.isEmpty() ? QString() : m_styleSheetList[0]; } //----------------------------------------------------------------- -QString Preferences::getCurrentStyleSheet() const { - return m_styleSheetMaps[m_currentStyleSheet]; +QString Preferences::getCurrentStyleSheetPath() const { + if (m_currentStyleSheet.isEmpty()) return QString(); + TFilePath path(TEnv::getConfigDir() + "qss"); + QString string = m_currentStyleSheet + QString("/") + m_currentStyleSheet + + QString(".qss"); + return QString("file:///" + path.getQString() + "/" + string); } //----------------------------------------------------------------- QString Preferences::getStyleSheet(int index) const { - return m_styleSheetMaps[index]; + return m_styleSheetList[index]; } //----------------------------------------------------------------- int Preferences::getStyleSheetCount() const { - return (int)m_styleSheetMaps.size(); + return (int)m_styleSheetList.size(); } //----------------------------------------------------------------- -void Preferences::setCurrentStyleSheet(int currentStyleSheet) { +void Preferences::setCurrentStyleSheet(const QString ¤tStyleSheet) { m_currentStyleSheet = currentStyleSheet; - m_settings->setValue("CurrentStyleSheet", m_currentStyleSheet); + m_settings->setValue("CurrentStyleSheetName", m_currentStyleSheet); } //----------------------------------------------------------------- @@ -1282,6 +1312,13 @@ void Preferences::setIgnoreImageDpi(bool on) { //----------------------------------------------------------------- +void Preferences::setVectorSnappingTarget(int target) { + m_vectorSnappingTarget = target; + m_settings->setValue("vectorSnappingTarget", target); +} + +//----------------------------------------------------------------- + void Preferences::setPaletteTypeOnLoadRasterImageAsColorModel(int type) { m_paletteTypeOnLoadRasterImageAsColorModel = type; m_settings->setValue("paletteTypeOnLoadRasterImageAsColorModel", type); diff --git a/toonz/sources/toonzlib/strokegenerator.cpp b/toonz/sources/toonzlib/strokegenerator.cpp index 1fde00f..f1e6b99 100644 --- a/toonz/sources/toonzlib/strokegenerator.cpp +++ b/toonz/sources/toonzlib/strokegenerator.cpp @@ -5,6 +5,7 @@ //#include "tofflinegl.h" #include "tstroke.h" +#include "toonz/preferences.h" using namespace std; @@ -117,10 +118,46 @@ void StrokeGenerator::drawFragments(int first, int last) { TThickPoint c; TPointD v; + // If drawing a straight line, a stroke can have only two points + if (m_points.size() == 2) { + a = m_points[0]; + b = m_points[1]; + if (Preferences::instance()->getShow0ThickLines()) { + if (a.thick == 0) a.thick = 0.1; + if (b.thick == 0) b.thick = 0.1; + } + // m_p0 = m_p1 = b; + assert(tdistance(b, a) > h); + v = a.thick * normalize(rotate90(b - a)); + m_p0 = a + v; + m_p1 = a - v; + v = b.thick * normalize(rotate90(b - a)); + TPointD p0 = b + v; + TPointD p1 = b - v; + glBegin(GL_POLYGON); + tglVertex(m_p0); + tglVertex(m_p1); + tglVertex(p1); + tglVertex(p0); + glEnd(); + m_p0 = p0; + m_p1 = p1; + glBegin(GL_LINE_STRIP); + tglVertex(a); + tglVertex(b); + glEnd(); + return; + } + while (i < last) { a = m_points[i - 1]; b = m_points[i]; c = m_points[i + 1]; + if (Preferences::instance()->getShow0ThickLines()) { + if (a.thick == 0) a.thick = 0.1; + if (b.thick == 0) b.thick = 0.1; + if (c.thick == 0) c.thick = 0.1; + } if (a.thick >= h && b.thick >= h && tdistance2(b, a) >= h && tdistance2(a, c) >= h) { if (i - 1 == 0) { @@ -205,6 +242,15 @@ TRectD StrokeGenerator::getModifiedRegion() const { return m_modifiedRegion; } //------------------------------------------------------------------- +void StrokeGenerator::removeMiddlePoints() { + int size = m_points.size(); + if (size > 2) { + m_points.erase(m_points.begin() + 1, m_points.begin() + (size - 1)); + } +} + +//------------------------------------------------------------------- + TRectD StrokeGenerator::getLastModifiedRegion() { TRectD lastModifiedRegion = m_lastModifiedRegion; m_lastModifiedRegion.empty(); @@ -213,6 +259,10 @@ TRectD StrokeGenerator::getLastModifiedRegion() { //------------------------------------------------------------------- +TPointD StrokeGenerator::getFirstPoint() { return m_points[0]; } + +//------------------------------------------------------------------- + TStroke *StrokeGenerator::makeStroke(double error, UINT onlyLastPoints) const { if (onlyLastPoints == 0 || onlyLastPoints > m_points.size()) return TStroke::interpolate(m_points, error); diff --git a/toonz/sources/toonzlib/tcleanupper.cpp b/toonz/sources/toonzlib/tcleanupper.cpp index 7647548..ab10c53 100644 --- a/toonz/sources/toonzlib/tcleanupper.cpp +++ b/toonz/sources/toonzlib/tcleanupper.cpp @@ -416,11 +416,11 @@ bool TCleanupper::getResampleValues(const TRasterImageP &image, TAffine &aff, saveBox.getLy() > 0 && saveBox.getLy() < rasterLy)) raster_is_savebox = false; - image->getDpi(dpi.x, dpi.y); - if (dpi == TPointD()) { - dpi = getCustomDpi(); - if (dpi == TPointD()) dpi.x = dpi.y = 65.0; // using 65.0 as default DPI - } else if (!dpi.x) + // Use the same source dpi throughout the level + dpi = getSourceDpi(); + if (dpi == TPointD()) + dpi.x = dpi.y = 65.0; // using 65.0 as default DPI //??????WHY + else if (!dpi.x) dpi.x = dpi.y; else if (!dpi.y) dpi.y = dpi.x; diff --git a/toonz/sources/toonzqt/filefield.cpp b/toonz/sources/toonzqt/filefield.cpp index 1832f08..848ffdb 100644 --- a/toonz/sources/toonzqt/filefield.cpp +++ b/toonz/sources/toonzqt/filefield.cpp @@ -94,7 +94,8 @@ void FileField::browseDirectory() { if (!m_browserPopupController) return; m_browserPopupController->openPopup( m_filters, (m_fileMode == QFileDialog::DirectoryOnly), - (m_lastSelectedPath == m_descriptionText) ? "" : m_lastSelectedPath); + (m_lastSelectedPath == m_descriptionText) ? "" : m_lastSelectedPath, + this); if (m_browserPopupController->isExecute()) directory = m_browserPopupController->getPath(); diff --git a/toonz/sources/toonzqt/spreadsheetviewer.cpp b/toonz/sources/toonzqt/spreadsheetviewer.cpp index 1274772..aae6779 100644 --- a/toonz/sources/toonzqt/spreadsheetviewer.cpp +++ b/toonz/sources/toonzqt/spreadsheetviewer.cpp @@ -94,13 +94,18 @@ void adjustScrollbar(QScrollBar *scrollBar, int add); void FrameScroller::onScroll(const CellPositionRatio &ratio) { QPoint offset = orientation()->positionRatioToXY(ratio); + // scroll area should be resized before moving down the scroll bar. + // SpreadsheetViewer::onPrepareToScrollOffset() will be invoked immediately + // since the receiver is in the same thread. + // when moving up the scroll bar, resizing will be done in + // SpreadsheetViewer::onVSliderChanged(). + if (offset.x() > 0 || offset.y() > 0) emit prepareToScrollOffset(offset); if (offset.x()) adjustScrollbar(m_scrollArea->horizontalScrollBar(), offset.x()); if (offset.y()) adjustScrollbar(m_scrollArea->verticalScrollBar(), offset.y()); - - emit prepareToScrollOffset(offset); } + void adjustScrollbar(QScrollBar *scrollBar, int add) { scrollBar->setValue(scrollBar->value() + add); } diff --git a/toonz/sources/toonzqt/styleeditor.cpp b/toonz/sources/toonzqt/styleeditor.cpp index 2c08501..cebf9bd 100644 --- a/toonz/sources/toonzqt/styleeditor.cpp +++ b/toonz/sources/toonzqt/styleeditor.cpp @@ -17,6 +17,7 @@ #include "toonz/imagestyles.h" #include "toonz/txshsimplelevel.h" //iwsw #include "toonz/levelproperties.h" //iwsw +#include "toonz/mypaintbrushstyle.h" // TnzCore includes #include "tconvert.h" @@ -2181,6 +2182,102 @@ bool TextureStyleChooserPage::event(QEvent *e) { } //***************************************************************************** +// MyPaintBrushStyleChooserPage definition +//***************************************************************************** + +class MyPaintBrushStyleChooserPage final : public StyleChooserPage { +public: + struct Brush { + TRasterP m_raster; + QString m_name; + }; + +private: + static std::vector m_brushes; + +public: + MyPaintBrushStyleChooserPage(QWidget *parent = 0) : StyleChooserPage(parent) + { m_chipSize = QSize(64, 64); } + + bool loadIfNeeded() override { + static bool m_loaded = false; + if (!m_loaded) { + loadItems(); + m_loaded = true; + return true; + } else + return false; + } + + int getChipCount() const override + { return m_brushes.size() + 1; } + + static void loadItems(); + + void drawChip(QPainter &p, QRect rect, int index) override { + assert(0 <= index && index <= (int)m_brushes.size()); + static QImage noStyleImage(":Resources/no_mypaintbrush.png"); + p.drawImage(rect, index == 0 ? noStyleImage : rasterToQImage(m_brushes[index-1].getPreview())); + } + + void onSelect(int index) override { + assert(0 <= index && index <= (int)m_brushes.size()); + static TSolidColorStyle noStyle(TPixel32::Black); + if (index == 0) { + emit styleSelected(noStyle); + } else { + emit styleSelected(m_brushes[index-1]); + } + } + + bool event(QEvent *e) override { + static TSolidColorStyle noStyle(TPixel32::Black); + if (e->type() == QEvent::ToolTip) { + QHelpEvent *helpEvent = dynamic_cast(e); + QString toolTip; + QPoint pos = helpEvent->pos(); + int index = posToIndex(pos); + if (index == 0) { + toolTip = tr("Plain color"); + } else + if (index > 0 && index <= (int)m_brushes.size()) { + toolTip = m_brushes[index-1].getPath().getQString(); + } + QToolTip::showText(helpEvent->globalPos(), toolTip); + e->accept(); + } + return StyleChooserPage::event(e); + } +}; + +//----------------------------------------------------------------------------- + +std::vector MyPaintBrushStyleChooserPage::m_brushes; + +//----------------------------------------------------------------------------- + +void MyPaintBrushStyleChooserPage::loadItems() { + m_brushes.clear(); + std::set brushFiles; + + TFilePathSet dirs = TMyPaintBrushStyle::getBrushesDirs(); + for(TFilePathSet::iterator i = dirs.begin(); i != dirs.end(); ++i) { + TFileStatus fs(*i); + if (fs.doesExist() && fs.isDirectory()) { + TFilePathSet files = TSystem::readDirectoryTree(*i, false, true); + for(TFilePathSet::iterator j = files.begin(); j != files.end(); ++j) + if (j->getType() == TMyPaintBrushStyle::getBrushType()) + brushFiles.insert(*j - *i); + } + } + + // reserve memory to avoid reallocation + m_brushes.reserve(brushFiles.size()); + for(std::set::iterator i = brushFiles.begin(); i != brushFiles.end(); ++i) + m_brushes.push_back(TMyPaintBrushStyle(*i)); +} + +//***************************************************************************** // SpecialStyleChooser definition //***************************************************************************** @@ -2232,7 +2329,8 @@ void SpecialStyleChooserPage::loadItems() { tagId == 2800 || // imagepattern tagId == 2001 || // cleanup tagId == 2002 || // ?? - tagId == 3000 // vector brush + tagId == 3000 || // vector brush + tagId == 4001 // mypaint brush ) continue; @@ -2589,6 +2687,17 @@ void SettingsPage::setStyle(const TColorStyleP &editedStyle) { } } + // "reset to default" button + if (m_editedStyle->hasParamDefault(p)) { + QPushButton *pushButton = new QPushButton; + pushButton->setToolTip(tr("Reset to default")); + pushButton->setIcon(createQIconPNG("delete")); + m_paramsLayout->addWidget(pushButton, p, 2); + ret = QObject::connect(pushButton, SIGNAL(clicked(bool)), this, + SLOT(onValueReset())) && + ret; + } + assert(ret); } } @@ -2613,6 +2722,13 @@ void SettingsPage::updateValues() { int p, pCount = m_editedStyle->getParamCount(); for (p = 0; p != pCount; ++p) { + // Update state of "reset to default" button + if (m_editedStyle->hasParamDefault(p)) { + QPushButton *pushButton = static_cast( + m_paramsLayout->itemAtPosition(p, 2)->widget()); + pushButton->setEnabled(m_editedStyle->isParamDefault(p)); + } + // Update editor values switch (m_editedStyle->getParamType(p)) { case TColorStyle::BOOL: { @@ -2680,26 +2796,40 @@ void SettingsPage::onAutofillChanged() { //----------------------------------------------------------------------------- -void SettingsPage::onValueChanged(bool isDragging) { - struct Locals { - SettingsPage *m_this; +int SettingsPage::getParamIndex(const QWidget *widget) { + int p, pCount = m_paramsLayout->rowCount(); + for (p = 0; p != pCount; ++p) + for(int c = 0; c < 3; ++c) + if (QLayoutItem *item = m_paramsLayout->itemAtPosition(p, c)) + if (item->widget() == widget) + return p; + return -1; +} - int paramIndex(const QWidget *widget) { - int p, pCount = m_this->m_paramsLayout->rowCount(); - for (p = 0; p != pCount; ++p) - if (m_this->m_paramsLayout->itemAtPosition(p, 1)->widget() == widget) - break; +//----------------------------------------------------------------------------- - return p; - } +void SettingsPage::onValueReset() { + assert(m_editedStyle); - } locals = {this}; + // Extract the parameter index + QWidget *senderWidget = static_cast(sender()); + int p = getParamIndex(senderWidget); + assert(0 <= p && p < m_editedStyle->getParamCount()); + m_editedStyle->setParamDefault(p); + + // Forward the signal to the style editor + if (!m_updating) emit paramStyleChanged(false); +} + +//----------------------------------------------------------------------------- + +void SettingsPage::onValueChanged(bool isDragging) { assert(m_editedStyle); // Extract the parameter index QWidget *senderWidget = static_cast(sender()); - int p = locals.paramIndex(senderWidget); + int p = getParamIndex(senderWidget); assert(0 <= p && p < m_editedStyle->getParamCount()); @@ -2790,12 +2920,13 @@ StyleEditor::StyleEditor(PaletteController *paletteController, QWidget *parent) m_tabBarContainer = new TabBarContainter(this); m_colorParameterSelector = new ColorParameterSelector(this); - m_plainColorPage = new PlainColorPage(0); - m_textureStylePage = new TextureStyleChooserPage(0); - m_specialStylePage = new SpecialStyleChooserPage(0); - m_customStylePage = new CustomStyleChooserPage(0); - m_vectorBrushesStylePage = new VectorBrushStyleChooserPage(0); - m_settingsPage = new SettingsPage(0); + m_plainColorPage = new PlainColorPage(0); + m_textureStylePage = new TextureStyleChooserPage(0); + m_specialStylePage = new SpecialStyleChooserPage(0); + m_customStylePage = new CustomStyleChooserPage(0); + m_vectorBrushesStylePage = new VectorBrushStyleChooserPage(0); + m_mypaintBrushesStylePage = new MyPaintBrushStyleChooserPage(0); + m_settingsPage = new SettingsPage(0); QWidget *emptyPage = new StyleEditorPage(0); @@ -2806,10 +2937,11 @@ StyleEditor::StyleEditor(PaletteController *paletteController, QWidget *parent) // in order to use the styleSheet to stylish its background QScrollArea *plainArea = makeChooserPageWithoutScrollBar(m_plainColorPage); - QScrollArea *textureArea = makeChooserPage(m_textureStylePage); - QScrollArea *specialArea = makeChooserPage(m_specialStylePage); - QScrollArea *customArea = makeChooserPage(m_customStylePage); - QScrollArea *vectorBrushesArea = makeChooserPage(m_vectorBrushesStylePage); + QScrollArea *textureArea = makeChooserPage(m_textureStylePage); + QScrollArea *specialArea = makeChooserPage(m_specialStylePage); + QScrollArea *customArea = makeChooserPage(m_customStylePage); + QScrollArea *vectorBrushesArea = makeChooserPage(m_vectorBrushesStylePage); + QScrollArea *mypaintBrushesArea = makeChooserPage(m_mypaintBrushesStylePage); QScrollArea *settingsArea = makeChooserPageWithoutScrollBar(m_settingsPage); m_styleChooser = new QStackedWidget(this); @@ -2818,6 +2950,7 @@ StyleEditor::StyleEditor(PaletteController *paletteController, QWidget *parent) m_styleChooser->addWidget(specialArea); m_styleChooser->addWidget(customArea); m_styleChooser->addWidget(vectorBrushesArea); + m_styleChooser->addWidget(mypaintBrushesArea); m_styleChooser->addWidget(settingsArea); m_styleChooser->addWidget(makeChooserPageWithoutScrollBar(emptyPage)); m_styleChooser->setFocusPolicy(Qt::NoFocus); @@ -2857,33 +2990,48 @@ StyleEditor::StyleEditor(PaletteController *paletteController, QWidget *parent) /* ------- signal-slot connections ------- */ bool ret = true; - ret = ret && connect(m_styleBar, SIGNAL(currentChanged(int)), this, - SLOT(setPage(int))); - ret = ret && connect(m_colorParameterSelector, SIGNAL(colorParamChanged()), - this, SLOT(onColorParamChanged())); - ret = ret && - connect(m_textureStylePage, SIGNAL(styleSelected(const TColorStyle &)), - this, SLOT(selectStyle(const TColorStyle &))); - ret = ret && - connect(m_specialStylePage, SIGNAL(styleSelected(const TColorStyle &)), - this, SLOT(selectStyle(const TColorStyle &))); - ret = ret && - connect(m_customStylePage, SIGNAL(styleSelected(const TColorStyle &)), - this, SLOT(selectStyle(const TColorStyle &))); - ret = ret && connect(m_vectorBrushesStylePage, - SIGNAL(styleSelected(const TColorStyle &)), this, - SLOT(selectStyle(const TColorStyle &))); - ret = ret && connect(m_settingsPage, SIGNAL(paramStyleChanged(bool)), this, - SLOT(onParamStyleChanged(bool))); - ret = ret && connect(m_plainColorPage, - SIGNAL(colorChanged(const ColorModel &, bool)), this, - SLOT(onColorChanged(const ColorModel &, bool))); + ret = ret && connect( m_styleBar, + SIGNAL(currentChanged(int)), + this, + SLOT(setPage(int)) ); + ret = ret && connect( m_colorParameterSelector, + SIGNAL(colorParamChanged()), + this, + SLOT(onColorParamChanged()) ); + ret = ret && connect( m_textureStylePage, + SIGNAL(styleSelected(const TColorStyle &)), + this, + SLOT(selectStyle(const TColorStyle &))); + ret = ret && connect( m_specialStylePage, + SIGNAL(styleSelected(const TColorStyle &)), + this, + SLOT(selectStyle(const TColorStyle &)) ); + ret = ret && connect( m_customStylePage, + SIGNAL(styleSelected(const TColorStyle &)), + this, + SLOT(selectStyle(const TColorStyle &)) ); + ret = ret && connect( m_vectorBrushesStylePage, + SIGNAL(styleSelected(const TColorStyle &)), + this, + SLOT(selectStyle(const TColorStyle &)) ); + ret = ret && connect( m_mypaintBrushesStylePage, + SIGNAL(styleSelected(const TColorStyle &)), + this, + SLOT(selectStyle(const TColorStyle &)) ); + ret = ret && connect( m_settingsPage, + SIGNAL(paramStyleChanged(bool)), + this, + SLOT(onParamStyleChanged(bool)) ); + ret = ret && connect( m_plainColorPage, + SIGNAL(colorChanged(const ColorModel &, bool)), + this, + SLOT(onColorChanged(const ColorModel &, bool)) ); assert(ret); /* ------- initial conditions ------- */ enable(false, false, false); // set to the empty page - m_styleChooser->setCurrentIndex(6); + m_styleChooser->setCurrentIndex(7); } //----------------------------------------------------------------------------- @@ -2973,6 +3121,7 @@ void StyleEditor::updateTabBar() { m_styleBar->addSimpleTab(tr("Special")); m_styleBar->addSimpleTab(tr("Custom")); m_styleBar->addSimpleTab(tr("Vector Brush")); + m_styleBar->addSimpleTab(tr("MyPaint Brush")); m_styleBar->addSimpleTab(tr("Settings")); } else if (m_enabled && m_enabledOnlyFirstTab && !m_enabledFirstAndLastTab) m_styleBar->addSimpleTab(tr("Plain")); @@ -2980,7 +3129,7 @@ void StyleEditor::updateTabBar() { m_styleBar->addSimpleTab(tr("Plain")); m_styleBar->addSimpleTab(tr("Settings")); } else { - m_styleChooser->setCurrentIndex(6); + m_styleChooser->setCurrentIndex(7); return; } m_tabBarContainer->layout()->update(); @@ -3027,7 +3176,7 @@ void StyleEditor::onStyleSwitched() { if (!palette) { // set the current page to empty - m_styleChooser->setCurrentIndex(6); + m_styleChooser->setCurrentIndex(7); enable(false); m_colorParameterSelector->clear(); m_oldStyle = TColorStyleP(); diff --git a/toonz/sources/translations/russian/colorfx.ts b/toonz/sources/translations/russian/colorfx.ts new file mode 100644 index 0000000..34db3fe --- /dev/null +++ b/toonz/sources/translations/russian/colorfx.ts @@ -0,0 +1,875 @@ + + + + + ArtisticSolidColor + + + Horiz Offset + Гориз. смещение + + + + Vert Offset + Вертик. смещение + + + + Noise + Шум + + + + Irregular + Нерегулярный + + + + MovingSolidColor + + + Horiz Offset + Гориз. смещение + + + + Vert Offset + Вертик. смещение + + + + Offset + Смещение + + + + OutlineViewerStyle + + + Control Point + Контрольная точка + + + + Center Line + Центральная линия + + + + Outline Mode + Режим контура + + + + Distance + Расстояние + + + + distance + расстояние + + + + OutlineViewer(OnlyDebug) + OutlineViewer(OnlyDebug) + + + + ShadowStyle + + + Angle + Угол + + + + Density + Плотность + + + + Length + Длина + + + + Hatched Shading + Заштрихованная заливка + + + + ShadowStyle2 + + + Angle + Угол + + + + Size + Размер + + + + Plain Shadow + Обычная тень + + + + TAirbrushRasterStyle + + + Airbrush + Аэрограф + + + + Blur value + Величина размытия + + + + TBiColorStrokeStyle + + + Shade + Тень + + + + TBlendRasterStyle + + + Blend + Смешение + + + + TBlendStrokeStyle2 + + + Border Fade + Затухание границ + + + + Fade In + Fade In + + + + Fade Out + Fade Out + + + + Fade + Затухание + + + + TBraidStrokeStyle + + + Twirl + Вращение + + + + Plait + Заплетание + + + + TBubbleStrokeStyle + + + Bubbles + Пузыри + + + + TChainStrokeStyle + + + Chain + Цепь + + + + TChalkFillStyle + + + Density + Плотность + + + + Dot Size + Размер точки + + + + Chalk + Мел + + + + TChalkStrokeStyle2 + + + Border Fade + Затухание границ + + + + Density + Плотность + + + + Fade In + Fade In + + + + Fade Out + Fade Out + + + + Noise + Шум + + + + Chalk + Мел + + + + TCheckedFillStyle + + + Horiz Dist + Гориз. расст + + + + Horiz Angle + Горизонтальный угол + + + + Vert Dist + Вертик. расст + + + + Vert Angle + Вертикальный угол + + + + Thickness + Толщина + + + + Square + Квадрат + + + + TChessFillStyle + + + Horiz Size + Горизонтальный размер + + + + Vert Size + Ввертикальный размер + + + + Angle + Угол + + + + Chessboard + Шахматная доска + + + + TCircleStripeFillStyle + + + X Position + Позиция по оси X + + + + Y Position + Позиция по оси Y + + + + Distance + Расстояние + + + + Thickness + Толщина + + + + Concentric + Концентрический + + + + TCrystallizeStrokeStyle + + + Crease + Сгиб + + + + Opacity + Непрозрачность + + + + Tulle + Тюль + + + + TDottedFillStyle + + + Dot Size + Размер точки + + + + Dot Distance + Расстояние между точек + + + + Polka Dots + В горошек + + + + TDottedLineStrokeStyle + + + Fade In + Fade In + + + + Dash + Черточка + + + + Fade Out + Fade Out + + + + Gap + Щель + + + + Vanishing + Исчезающий + + + + TDualColorStrokeStyle2 + + + Distance + Расстояние + + + + Striped + В полоску + + + + TFriezeStrokeStyle2 + + + Twirl + Вращение + + + + Thickness + Толщина + + + + Curl + Завивка + + + + TFurStrokeStyle + + + Angle + Угол + + + + Size + Размер + + + + Herringbone + Елочка + + + + TGraphicPenStrokeStyle + + + Density + Плотность + + + + Dashes + Черточки + + + + TLinGradFillStyle + + + Angle + Угол + + + + X Position + Позиция по оси X + + + + Y Position + Позиция по оси Y + + + + Smoothness + Гладкость + + + + Linear Gradient + Линейный градиент + + + + TLongBlendStrokeStyle2 + + + Distance + Расстояние + + + + Watercolor + Акварель + + + + TMatrioskaStrokeStyle + + + Stripes + Полосы + + + + Toothpaste + Зубная паста + + + + TMosaicFillStyle + + + Size + Размер + + + + Distortion + Дисторсия + + + + Min Thick + Минимальная толщина + + + + Max Thick + Максимальная толщина + + + + Stained Glass + Витражное стекло + + + + TMultiLineStrokeStyle2 + + + Density + Плотность + + + + Size + Размер + + + + Thickness + Толщина + + + + Noise + Шум + + + + Gouache + Гуашь + + + + TNoColorRasterStyle + + + Markup + Markup + + + + TNormal2StrokeStyle + + + Light X Pos + Свет по X + + + + Light Y Pos + Свет по Y + + + + Shininess + Блеск + + + + Plastic + Пластик + + + + + Bump + Выпуклость + + + + TPatchFillStyle + + + Size + Размер + + + + Distortion + Дисторсия + + + + Thickness + Толщина + + + + Beehive + Улей + + + + TPointShadowFillStyle + + + Angle + Угол + + + + Density + Плотность + + + + Size + Размер + + + + Point Size + Размер точки + + + + Sponge Shading + Затенение губкой + + + + TRadGradFillStyle + + + X Position + Позиция по оси X + + + + Y Position + Позиция по оси Y + + + + Radius + Радиус + + + + Smoothness + Гладкость + + + + Radial Gradient + Радиальный градиент + + + + TRopeStrokeStyle + + + Tilt + Наклон + + + + Rope + Rope + + + + TRubberFillStyle + + + Intensity + Интенсивность + + + + Blob + Капля + + + + TSawToothStrokeStyle + + + Distance + Расстояние + + + + Jagged + Зубчатый + + + + TSinStrokeStyle + + + Frequency + Частота + + + + Wave + Волна + + + + TSketchStrokeStyle + + + Density + Плотность + + + + Fuzz + Fuzz + + + + TSprayStrokeStyle + + + Border Fade + Затухание границ + + + + Density + Плотность + + + + Size + Размер + + + + Circlets + Кружки + + + + TStripeFillStyle + + + Distance + Расстояние + + + + Angle + Угол + + + + Thickness + Толщина + + + + Banded + Окаймленный + + + + TTissueStrokeStyle + + + Density + Плотность + + + + Border Size + Размер границы + + + + Gauze + Дымка + + + + TTwirlStrokeStyle + + + Twirl + Вращение + + + + Shade + Тень + + + + Ribbon + Лента + + + + TZigzTSinStrokeStyleagStrokeStyle + + + Thickness + Толщина + + + + TZigzagStrokeStyle + + + Min Distance + Минимальное расстояние + + + + Max Distance + Максимальное расстояние + + + + Min Angle + Минимальный угол + + + + Max Angle + Максимальный угол + + + + Thickness + Толщина + + + + Zigzag + Зигзаг + + + diff --git a/toonz/sources/translations/russian/tnzcore.ts b/toonz/sources/translations/russian/tnzcore.ts new file mode 100644 index 0000000..6ca62bd --- /dev/null +++ b/toonz/sources/translations/russian/tnzcore.ts @@ -0,0 +1,66 @@ + + + + + QObject + + + colors + Цвет + + + + Skipping frame. + Пропуск кадров. + + + + Malformed frame name + Неверное имя кадра + + + + Unidentified Action + Неопознанное действие + + + + TCenterLineStrokeStyle + + + Constant + Постоянный + + + + Thickness + Толщина + + + + TRasterImagePatternStrokeStyle + + + Distance + Расстояние + + + + Rotation + Вращение + + + + TVectorImagePatternStrokeStyle + + + Distance + Расстояние + + + + Rotation + Вращение + + + diff --git a/toonz/sources/translations/russian/tnztools.ts b/toonz/sources/translations/russian/tnztools.ts new file mode 100644 index 0000000..0108df6 --- /dev/null +++ b/toonz/sources/translations/russian/tnztools.ts @@ -0,0 +1,1260 @@ + + + + + ArrowToolOptionsBox + + + + E/W: + запад/восток + E/W: + + + + + N/S: + север/юг + N/S: + + + + SO: + порядок размещения: + SO: + + + + Position + Позиция + + + + Z: + глубина + Z: + + + + ( + ( + + + + ) + ) + + + + Rotation + Вращение + + + + Scale + Масштаб + + + + Global: + Глобальный: + + + + + H: + горизонтально + H: + + + + + V: + вертикально + V: + + + + Maintain: + Поддерживать: + + + + Shear + Скос + + + + Center Position + Центральное положение + + + + Pick: + Выбрать: + + + + BrushTool + + + + Size + Размер + + + + Hardness: + Твёрдость: + + + + Accuracy: + Точность: + + + + Smooth: + Плавность: + + + + Selective + Выборочный + + + + Preset: + Пресет: + + + + Break + Разрыв + + + + Pencil + Карандаш + + + + Pressure + Нажим пера + + + + Cap + Край + + + + Join + Объединить + + + + Miter: + Скос: + + + + BrushToolOptionsBox + + + Preset Name + Имя пресета + + + + OK + OK + + + + Cancel + Отмена + + + + ControlPointEditorTool + + + Auto Select Drawing + Автовыбор + + + + ControlPointSelection + + + Set Linear Control Point + Установить линейную контрольную точку + + + + Set Nonlinear Control Point + Установить нелинейную контрольную точку + + + + EditTool + + + Scale Constraint: + Равномерный масштаб: + + + + Auto Select Column + Автовыбор колонки + + + + Global Key + Глобальный ключ + + + + Lock Center E/W + Блокировать центр E/W + + + + Lock Center N/S + Блокировать центр N/S + + + + Lock Position E/W + Блокировать позицию E/W + + + + Lock Position N/S + Блокировать позицию N/S + + + + Lock Rotation + Блокировать вращение + + + + Lock Shear H + Болкировать сдвиг H + + + + Lock Shear V + Болкировать сдвиг V + + + + Lock Scale H + Болкировать масштаб H + + + + Lock Scale V + Болкировать масштаб V + + + + Lock Global Scale + Болкировать глобальный масштаб + + + + E/W and N/S Positions + E/W и N/S позиции + + + + Z Position + Z позиция + + + + SO + порядок размещения + SO + + + + Rotation + Вращение + + + + Global Scale + Глобальный масштаб + + + + Horizontal and Vertical Scale + Горизонтальный и вертикальный масштаб + + + + Shear + Скос + + + + Center Position + Центральное положение + + + + Active Axis + Активная ось + + + + EraserTool + + + + Size: + Размер: + + + + + Selective + Выборочный + + + + + Invert + Инвертировать + + + + + Frame Range + Диапазон кадров + + + + + Type: + Тип: + + + + Hardness: + Твёрдость: + + + + Mode: + Режим: + + + + Pencil Mode + Карандаш + + + + FillTool + + + Frame Range + Диапазон кадров + + + + Type: + Тип: + + + + Selective + Выборочный + + + + Mode: + Режим: + + + + Onion Skin + Луковая кожура + + + + Fill Depth + Глубина заполнения + + + + Segment + Сегмент + + + + FingerTool + + + Size: + Размер: + + + + Invert + Инвертировать + + + + FullColorBrushTool + + + Size + Размер + + + + Pressure + Нажим пера + + + + Opacity + Прозрачность + + + + Hardness: + Твёрдость: + + + + Preset: + Пресеты: + + + + FullColorEraserTool + + + Size: + Размер: + + + + Opacity: + Прозрачность: + + + + Hardness: + Твёрдость: + + + + Type: + Тип: + + + + Invert + Инвертировать + + + + Frame Range + Диапазон кадров + + + + HookTool + + + Snap + Привязка + + + + MagnetTool + + + Size: + Размер: + + + + PaintBrushTool + + + Size: + Размер: + + + + Mode: + Режим: + + + + Selective + Выборочный + + + + PinchTool + + + Size: + Размер: + + + + Corner: + Угол: + + + + Manual + Вручную + + + + PlasticTool + + + Swap Edge + Поменять ребро + + + + Collapse Edge + Коллапс ребра + + + + Split Edge + Разделить ребро + + + + Cut Mesh + Резать сетку + + + + Delete Vertex + Удалить вершину + + + + Set Key + Установить ключ + + + + Set Rest Key + Установить ключ покоя + + + + Set Global Key + Установить глобальный ключ + + + + Set Global Rest Key + Установить глобальный ключ покоя + + + + Mode: + Режим: + + + + Edit Mesh + Редактировать сетку + + + + Paint Rigid + Покрасить жесткость + + + + Build Skeleton + Создать скелет + + + + Animate + Анимировать + + + + Vertex Name: + Имя вершины: + + + + Allow Stretching + Разрешить растягивание + + + + Snap To Mesh + Привязка к сетке + + + + Thickness + Толщина + + + + Rigid + Жесткий + + + + Flex + Гибкий + + + + Global Key + Глобальный ключ + + + + Keep Distance + Держать дистанцию + + + + Angle Bounds + Угол привязки + + + + A group of skeletons already exists for current column. Replacing it will also substitute any existing vertex animation. + +Do you want to continue? + Скелетная группа уже существует для текущего столбца. Замена его также заменит любую существующую анимацию вершин. + +Вы хотите продолжить? + + + + Ok + OK + + + + Cancel + Отмена + + + + Copy Skeleton + Копировать скелет + + + + Paste Skeleton + Вставить скелет + + + + Show Mesh + Показать сетку + + + + Show Rigidity + Показать жесткость + + + + Show SO + SO - порядок перекрытия + Показать SO + + + + Show Skeleton Onion Skin + Показать луковую кожуру скелета + + + + The previous vertex name will be discarded, and all associated keys will be lost. + +Do you want to proceed? + Предыдущее имя вершины будет сброшено, и все связанные ключи будут потеряны. + +Вы хотите продолжить? + + + + PlasticToolOptionsBox + + + Create Mesh + Создать сетку + + + + Skeleton: + Скелет: + + + + Distance + Расстояние + + + + Angle + Угол + + + + SO + порядок перекрытия + SO + + + + PrimitiveParam + + + Shape: + Форма: + + + + Size: + Размер: + + + + Thickness: + Толщина: + + + + Opacity: + Прозрачность: + + + + Hardness: + Твёрдость: + + + + Polygon Sides: + Стороны многоугольника: + + + + Auto Group + Автогруппировка + + + + Auto Fill + Автозаполнение + + + + Selective + Выборочный + + + + Pencil Mode + Режим карандаша + + + + Cap + Край + + + + Join + Объединить + + + + Miter: + Скос: + + + + PumpTool + + + Size: + Размер: + + + + Accuracy: + Точность: + + + + QObject + + + + The copied selection cannot be pasted in the current drawing. + Скопированное выделение невозможно вставить в текущий рисунок. + + + + + Paste + Вставить + + + + + Min: + Мин: + + + + + Max: + Макс: + + + + Set Save Box : (X%1,Y%2,W%3,H%4)->(X%5,Y%6,W%7,H%8) + Установить Save Box : (X%1,Y%2,W%3,H%4)->(X%5,Y%6,W%7,H%8) + + + + Move Center + Переместить центр + + + + RGB Picker (R%1, G%2, B%3) + RGB Пикер (R%1, G%2, B%3) + + + + Ok + OK + + + + Cancel + Отмена + + + + Group + Группировать + + + + Ungroup + Разгруппировать + + + + Move Group + Переместить группу + + + + + Yes + Да + + + + + No + Нет + + + + Modify Fx Gadget + Изменить Fx-гаджет + + + + The current column is locked. + Текущая колонка на замке. + + + + It is not possible to edit the audio column. + Невозможно редактировать колонку аудио. + + + + It is not possible to edit the Magpie column. + Редактировать колонку Magpie невозможно. + + + + The current tool cannot be used on a Level column. + Текущий инструмент нельзя использовать в колонке уровня. + + + + The current tool cannot be used on a Mesh column. + Текущий инструмент нельзя использовать в колонке меша. + + + + The current tool cannot be used in Level Strip mode. + Текущий инструмент нельзя использовать в режиме "Полоса уровней". + + + + The current tool cannot be used to edit a motion path. + Текущий инструмент не может использоваться для редактирования пути движения. + + + + + The current level is not editable. + Текущий уровень не редактируется. + + + + The current tool cannot be used on a Vector Level. + Текущий инструмент нельзя использовать в векторном уровне. + + + + The current tool cannot be used on a Toonz Level. + Текущий инструмент нельзя использовать в Toonz уровне. + + + + The current tool cannot be used on a Raster Level. + Текущий инструмент нельзя использовать в растровом уровне. + + + + The current tool cannot be used on a Mesh Level. + Текущий инструмент нельзя использовать в уровне меша. + + + + The current tool cannot be used on a mesh-deformed level + Текущий инструмент нельзя использовать в уровне меш деформации + + + + The current frame is locked: any editing is forbidden. + Текущий кадр заблокирован: любое редактирование запрещено. + + + + %1 Level : %2 Frame : %3 + %1 Уровень : %2 Ячейка : %3 + + + + + Modify Stroke Tool + Изменить метод обводки + + + + Modify Spline + Изменить сплайн + + + + Deform Raster + Деформировать растр + + + + Transform Raster + Трансформировать растр + + + + RGBPickerTool + + + Type: + Тип: + + + + Passive Pick + Пассивный выбор + + + + RGBPickerToolOptionsBox + + + Pick Screen + Экранный выбор + + + + RasterSelectionTool + + + Modify Savebox + Изменить Savebox + + + + No Antialiasing + Без сглаживания + + + + RasterTapeTool + + + Type: + Тип: + + + + Distance: + Расстояние: + + + + Style Index: + Индекс стиля: + + + + Opacity: + Прозрачность: + + + + Frame Range + Диапазон кадров + + + + Angle: + Угол: + + + + SelectionTool + + + Type: + Тип: + + + + SelectionToolOptionsBox + + + H: + H: + + + + V: + V: + + + + Link + Связать + + + + Rotation + Вращение + + + + E/W: + E/W: + + + + N/S: + N/S: + + + + Thickness + Толщина + + + + SkeletonTool + + + Show Only Active Skeleton + Показать только активный скелет + + + + Global Key + Глобальный ключ + + + + Mode: + Режим: + + + + Reset Pinned Center + Сбросить закрепленный центр + + + + StylePickerTool + + + No current level. + Нет текущего уровня. + + + + Current level has no available palette. + Текущий уровень не имеет доступной палитры. + + + + Palette must have more than one palette to be organized. + Для организации палитра должна иметь более одной палитры. + + + + StylePickerToolOptionsBox + + + With this option being activated, the picked style will be +moved to the end of the first page of the palette. + При активации этой опции выбранный стиль будет +перемещен в конец первой страницы палитры. + + + + TrackerTool + + + Width: + Ширина: + + + + Height: + Высота: + + + + X: + X: + + + + Y: + Y: + + + + TypeTool + + + Font: + Шрифт: + + + + Style: + Стиль: + + + + Vertical Orientation + Вертикальная ориентация + + + + Size: + Размер: + + + + VectorSelectionTool + + + Mode: + Режим: + + + + Preserve Thickness + Сохранить толщину + + + + Cap + Край + + + + Join + Объединить + + + + Miter: + Скос: + + + + VectorTapeTool + + + Smooth + Сглаживать + + + + Join Vectors + Объединить векторы + + + + Distance + Расстояние + + + + Mode: + Режим: + + + + Type: + Тип: + + + diff --git a/toonz/sources/translations/russian/toonz.ts b/toonz/sources/translations/russian/toonz.ts new file mode 100644 index 0000000..ba07f69 --- /dev/null +++ b/toonz/sources/translations/russian/toonz.ts @@ -0,0 +1,12578 @@ + + + + + AddFilmstripFramesPopup + + + Add Frames + Добавить кадры + + + + Add + Добавить + + + + Cancel + Отмена + + + + From Frame: + От кадра: + + + + To Frame: + До кадра: + + + + Step: + Шаг: + + + + AdjustLevelsPopup + + + Adjust Levels + Регулировать уровень + + + + Clamp + Сомкнуть + + + + Auto + Авто + + + + Reset + По умолчанию + + + + Apply + + + + + AdjustThicknessPopup + + + Adjust Thickness + Отрегулировать толщину + + + + Mode: + Режим: + + + + Scale Thickness + Масштаб толщины + + + + Add Thickness + Добавить толщину + + + + Constant Thickness + Постоянная толщина + + + + Start: + Начало: + + + + End: + Конец: + + + + Apply + Применить + + + + AntialiasPopup + + + Apply Antialias + Применить сглаживание + + + + Threshold: + Предел: + + + + Softness: + Мягкость: + + + + Apply + Применить + + + + ApplyMatchlinesCommand + + + It is not possible to apply the match lines because no column was selected. + Невозможно применить match lines, потому что не был выбран столбец. + + + + It is not possible to apply the match lines because two columns have to be selected. + Невозможно применить match lines, потому что нужно выбрать два столбца. + + + + AudioRecordingPopup + + + Audio Recording + Запись аудио + + + + Save and Insert + Сохранить и вставить + + + + Sync with XSheet + Синхронизация с XSheet + + + + + + + + + + The microphone is not available: +Please select a different device or check the microphone. + Микрофон недоступен: +Выберите другое устройство или проверьте микрофон. + + + + AutocenterPopup + + + + Autocenter + Автоцентр + + + + Pegbar Holes: + Отверстия Pegbar: + + + + Field Guide: + Гид поля: + + + + BatchServersViewer + + + Process with: + Процесс с: + + + + Local + Локальный + + + + Render Farm + Рендер ферма + + + + Farm Global Root: + Farm Global Root: + + + + Name: + Имя: + + + + IP Address: + IP Адрес: + + + + Port Number: + Номер порта: + + + + Tasks: + Задания: + + + + State: + Состояние: + + + + Number of CPU: + Количество процессоров: + + + + Physical Memory: + Физическая память: + + + + In order to use the render farm you have to define the Farm Global Root first. + Чтобы использовать рендер ферму, сначала необходимо определить Farm Global Root. + + + + The Farm Global Root folder doesn't exist +Please create this folder before using the render farm. + Папка Farm Global Root не существует +Создайте эту папку перед использованием рендер фермы. + + + + Unable to connect to the ToonzFarm Controller + The Controller should run on %1 at port %2 + Please start the Controller before using the ToonzFarm + Не удается подключиться к контроллеру ToonzFarm + Контроллер должен работать на %1 в порту %2 + Перед использованием ToonzFarm запустите контроллер + + + + BatchesController + + + The %1 task is currently active. +Stop it or wait for its completion before removing it. + Задача %1 в настоящее время активна. +Остановите его или дождитесь его завершения, прежде чем удалять его. + + + + + The current task list has been modified. +Do you want to save your changes? + Текущий список задач изменен. +Хотите сохранить изменения? + + + + + Save + Сохранить + + + + + Discard + Сброс + + + + + Cancel + Отмена + + + + Tasks + Задания + + + + The Task List is empty! + Список задач пуст! + + + + BinarizePopup + + + Binarize + Бинаризация + + + + Alpha + Альфа + + + + Preview + Предпросмотр + + + + Apply + Применить + + + + No raster frames selected + Не выбраны кадры с растром + + + + Binarizing images + Бинаризация изображений + + + + Cancel + Отмена + + + + BrightnessAndContrastPopup + + + Brightness and Contrast + Яркость и контрастность + + + + Brightness: + Яркость: + + + + Contrast: + Контрастность: + + + + Apply + Применить + + + + BrowserPopup + + + Choose + Выбрать + + + + Path %1 doesn't exists. + Пути %1 не существует. + + + + CameraSettingsPopup + + + Name: + Имя: + + + + Camera#%1 Settings + Настройки камеры#%1 + + + + Current Camera Settings + Текущие настройки камеры + + + + CanvasSizePopup + + + Canvas Size + Размер холста + + + + Current Size + Текущий размер + + + + + Width: + Ширина: + + + + + Height: + Высота: + + + + New Size + Новый размер + + + + Unit: + Ед. изм: + + + + Relative + Относительный + + + + Anchor + Анкер + + + + Resize + Изменение размера + + + + + Cancel + Отмена + + + + The new canvas size is smaller than the current one. +Do you want to crop the canvas? + Новый размер холста меньше текущего. +Вы хотите обрезать холст? + + + + Crop + Обрезать + + + + CaptureSettingsPopup + + + Define Device + Определить устройство + + + + V Resolution + V Resolution + + + + H Resolution + H Resolution + + + + White Calibration + Калибровка белого + + + + Capture + Захват + + + + Brightness: + Яркость: + + + + Contrast: + Контрастность: + + + + Upside-down + Вверх ногами + + + + A Device is Connected. + Устройство подключено. + + + + No cameras found. + Камеры не найдены. + + + + Device Disconnected. + Устройство отключено. + + + + + No Device Defined. + Не определено устройство. + + + + CastBrowser + + + It is not possible to edit the selected file. + Редактировать выбранный файл невозможно. + + + + It is not possible to edit more than one file at once. + Невозможно одновременно редактировать несколько файлов. + + + + It is not possible to show the folder containing the selected file, as the file has not been saved yet. + Невозможно показать папку, содержащую выбранный файл, поскольку файл еще не сохранен. + + + + It is not possible to view the selected file, as the file has not been saved yet. + Невозможно просмотреть выбранный файл, так как файл еще не сохранен. + + + + It is not possible to show the info of the selected file, as the file has not been saved yet. + Невозможно показать информацию о выбранном файле, так как файл еще не сохранен. + + + + CastTreeViewer + + + Delete folder + Удалить папку + + + + Yes + Да + + + + No + Нет + + + + ChooseCameraDialog + + + Ok + Ок + + + + Cancel + Отмена + + + + CleanupPopup + + + + Cleanup + Очистка + + + + Cleanup in progress + Выполняется очистка + + + + Do you want to cleanup this frame? + Вы хотите очистить этот кадр? + + + + Skip + Пропустить + + + + Cleanup All + Очистить всё + + + + + Cancel + + + + + View + Вид + + + + Selected drawings will overwrite the original files after the cleanup process. +Do you want to continue? + Выбранные рисунки будут перезаписывать исходные файлы после процесса очистки. +Вы хотите продолжить? + + + + Ok + Ок + + + + There were errors opening the existing level "%1". + +Please choose to delete the existing level and create a new one +when running the cleanup process. + Появились ошибки, открывающие существующий уровень «%1». + +Пожалуйста, удалите существующий уровень и создайте новый + при запуске процесса очистки. + + + + The resulting resolution of level "%1" +does not match with that of previously cleaned up level drawings. + +Please set the right camera resolution and closest field, or choose to delete +the existing level and create a new one when running the cleanup process. + Полученное разрешение уровня « %1» + не совпадает с разрешением ранее очищенных чертежей уровня. + +Установите правильное разрешение камеры и поля, или удалите +существующий уровень и создайте новый при запуске процесса очистки. + + + + Cleanup in progress: + Выполняется очистка: + + + + It is not possible to cleanup: the cleanup list is empty. + Очистить невозможно: список очистки пуст. + + + + Couldn't create directory "%1" + Не удалось создать каталог "%1" + + + + Couldn't open "%1" for write + Не удалось открыть «%1» для записи + + + + Couldn't remove file "%1" + Не удалось удалить файл «%1» + + + + : Cleanup in progress + : Выполняется очистка + + + + CleanupPopup::OverwriteDialog + + + Warning! + Внимание! + + + + Cleanup all selected drawings overwriting those previously cleaned up.* + Очистите все выбранные рисунки, перезаписывая ранее очищенные. * + + + + Cleanup only non-cleaned up drawings and keep those previously cleaned up.* + Очистите только не очищенные чертежи и сохраните ранее очищенные. * + + + + Delete existing level and create a new level with selected drawings only. + Удалите существующий уровень и создайте новый уровень только с выбранными рисунками. + + + + Rename the new level adding the suffix + Переименуйте новый уровень, добавив суффикс + + + + This is Re-Cleanup. Overwrite only to the no-paint files. + Это повторная очистка. Перезаписывайте только "неокрашенные" файлы. + + + + * Palette will not be changed. + * Палитра не будет изменена. + + + + File "%1" already exists. +What do you want to do? + Файл «%1» уже существует. +Что вы хотите сделать? + + + + CleanupSettings + + + Cleanup + Очистка + + + + Processing + Обработка + + + + Camera + Камера + + + + Toggle Swatch Preview + Переключить Swatch Preview + + + + Toggle Opacity Check + Переключить Opacity Check + + + + Save Settings + Сохранить настройки + + + + Load Settings + Загрузить настройки + + + + Reset Settings + Сбросить настройки + + + + Cleanup Settings + Настройки очистки + + + + Cleanup Settings: %1 + Настройки очистки: %1 + + + + CleanupSettingsPane + + + Autocenter + Автоцентр + + + + Horizontal + Горизонтально + + + + Vertical + Вертикально + + + + MLAA Intensity: + MLAA Интенсивность: + + + + Save + Сохранить + + + + Load + Загрузить + + + + Reset + По умолчанию + + + + Standard + Стандарт + + + + None + Ничто + + + + Morphological + Морфологический + + + + Greyscale + видимо дпущена ошибка Greyscale - Grayscale + Оттенки серого + + + + Color + Цвет + + + + Pegbar Holes + Отверстия Pegbar + + + + Field Guide + + + + + Rotate + Поворот + + + + Flip + Перевернуть + + + + Line Processing: + Линия обработки: + + + + Antialias: + Сглаживание: + + + + Sharpness: + Резкость: + + + + Despeckling: + Удаление соринок: + + + + Save In + Сохранить в + + + + Cleanup Settings (Global) + Настройки очистки (глобальные) + + + + Cleanup Settings: + Настройки очистки: + + + + Cleanup Settings + Настройки очистки + + + + Cleanup Settings: %1 + Настройки очистки: %1 + + + + Please fill the Save In field. + Заполните поле «Сохранить». + + + + CleanupTab + + + Autocenter + Автоцентр + + + + Pegbar Holes: + Отверстия Pegbar: + + + + Field Guide: + Гид поля: + + + + Rotate: + Поворот: + + + + Flip: + Перевернуть: + + + + Horizontal + Горизонтально + + + + Vertical + Вертикально + + + + Save in: + Сохранить в: + + + + ClipListViewer + + + + Load Scene + Загрузить сцену + + + + CloneLevelUndo::LevelNamePopup + + + Clone Level + Клонировать уровень + + + + Level Name: + Имя уровня: + + + + ColorModelViewer + + + Color Model + Цветная модель + + + + Use Current Frame + Использовать текущий кадр + + + + Remove Color Model + Удалить цветную модель + + + + Update Colors by Using Picked Positions + Обновить цвета с помощью выбранных позиций + + + + Reset View + Вид по умолчанию + + + + Fit to Window + По размеру окна + + + + It is not possible to retrieve the color model set for the current level. + Невозможно получить набор цветовых моделей для текущего уровня. + + + + ComboViewerPanel + + + GUI Show / Hide + Показать / скрыть GUI + + + + Toolbar + Панель инструментов + + + + Tool Options Bar + Панель настройки инструментов + + + + Console + Консоль + + + + Safe Area (Right Click to Select) + Безопасная зона (Щелкните правой кнопкой мыши, чтобы выбрать) + + + + Field Guide + Гид поля + + + + Camera Stand View + Стандартный вид с камеры + + + + 3D View + 3D-просмотр + + + + Camera View + Вид с камеры + + + + Freeze + Заморозить + + + + Preview + Предпросмотр + + + + Sub-camera Preview + Предпросмотр суб-камеры + + + + Untitled + Безымянный + + + + Scene: + Сцена: + + + + :: Frame: + :: Кадр: + + + + :: Level: + :: Уровень: + + + + Level: + Уровень: + + + + CommandListTree + + + ----Separator---- + ----Разделитель---- + + + + ConflictWidget + + + Mine + Мой + + + + Theirs + Их + + + + ConvertPopup + + + Level %1 already exists; skipped. + Уровень %1 уже существует; пропуск. + + + + Converting %1 + Конвертация %1 + + + + Converting level %1 of %2: %3 + Конвертация уровня %1 из %2: %3 + + + + Level %1 has no frame; skipped. + Уровень %1 не имеет кадров; пропуск. + + + + Unpainted tlv + Неокрашенный tlv + + + + Unpainted tlv from non AA source + Неокрашенный tlv из источника без AA + + + + Painted tlv from two images + Окрашенный tlv из двух изображений + + + + Painted tlv from non AA source + Окрашенный tlv из источника без АА + + + + + Same as Painted + То же что и окрашенный + + + + Create new palette + Создать новую палитру + + + + Options + Опции + + + + Convert + Конвертировать + + + + + + Cancel + Отмена + + + + Bg Color: + Цвет заднего плана: + + + + Skip Existing Files + Пропустить существующие файлы + + + + Remove dot before frame number + Удалите точку перед номером кадра + + + + Convert... + Конвертировать... + + + + File to convert: + Файл для конвертации: + + + + Start: + Старт: + + + + End: + Конец: + + + + Save in: + Сохранить в: + + + + File Name: + Имя файла: + + + + File Format: + Формат файла: + + + + Stroke Mode: + Режим обводки: + + + + Centerline + Ось + + + + Outline + Контур + + + + Unpainted File Folder: + Папка неокрашенного файла: + + + + Unpainted File Suffix: + Суффикс неокрашенного файла: + + + + Apply Autoclose + Применить Autoclose + + + + Save Backup to "nopaint" Folder + Сохранить резервную копию в папку «nopaint» + + + + Append Default Palette + Добавить палитру по умолчанию + + + + Remove Unused Styles from Input Palette + Удаление неиспользуемых стилей из палитры ввода + + + + Keep Original Antialiasing + Сохранять оригинальное сглаживание + + + + Add Antialiasing with Intensity: + Добавить сглаживание с интенсивностью: + + + + Remove Antialiasing using Threshold: + Удалить сглаживание с использованием порога: + + + + When activated, styles of the default palette +($TOONZSTUDIOPALETTE\cleanup_default.tpl) will +be appended to the palette after conversion in +order to save the effort of creating styles +before color designing. + При активации стили палитры по умолчанию +($ TOONZSTUDIOPALETTE \ cleanup_default.tpl) + будут добавлены в палитру после преобразования, чтобы + сохранить попытки по созданию стилей перед рисованием цветом. + + + + Mode: + Режим: + + + + Antialias: + Сглаживание: + + + + Palette: + Палитра: + + + + Tolerance: + Толерантность: + + + + Convert 1 Level + Конвертировать 1 уровень + + + + Convert %1 Levels + Конвертировать%1 уровней + + + + + Level + Уровень + + + + already exists; skipped + уже существует; пропущено + + + + Generating level + Генерирование уровня + + + + converted to tlv. + конвертировано в tlv. + + + + Level %1 converted to TLV Format + Уровень %1 конвертирован в формат TLV + + + + Warning: Level %1 NOT converted to TLV Format + Внимание: Уровень %1 НЕ конвертирован в формат TLV + + + + Converted %1 out of %2 Levels to TLV Format + Конвертировано %1 из%2 Уровни в формат TLV + + + + Warning: Can't read palette '%1' + Внимание: не удается прочитать палитру "%1" + + + + No output filename specified: please choose a valid level name. + Не указано имя выходного файла: выберите допустимое имя уровня. + + + + No unpainted suffix specified: cannot convert. + Нет неокрашенного суффикса: нельзя конвертировать. + + + + Convert completed with %1 error(s) and %2 level(s) skipped + Конвертирование завершено с ошибкой %1 и %2 уровни пропущены + + + + Convert completed with %1 error(s) + Конвертирование завершено с ошибкой %1 + + + + %1 level(s) skipped + Уровень %1 пропущен + + + + DVGui::ProgressDialog + + + Loading "%1"... + Загрузка "%1"... + + + + Importing "%1"... + Импорт "%1"... + + + + DateChooserWidget + + + time ago. + времени назад. + + + + days ago. + дней назад. + + + + weeks ago. + недель назад. + + + + ( Custom date ) + (Пользовательская дата) + + + + DefineScannerPopup + + + Define Scanner + Определить сканер + + + + Scanner Driver: + Драйвер сканера: + + + + OK + OK + + + + Cancel + Отмена + + + + DeleteInkDialog + + + Delete Lines + УДалить линии + + + + Delete + Удалить + + + + Cancel + Отмена + + + + Style Index: + Индекс стиля: + + + + Apply to Frames: + Применить к кадрам: + + + + DuplicatePopup + + + + Repeat + Повторение + + + + Close + Закрыть + + + + Apply + Применить + + + + Times: + Время: + + + + Up to Frame: + До кадра: + + + + DvDirTreeView + + + There was an error copying %1 to %2 + Произошла ошибка при копировании %1 в %2 + + + + Edit + Редактировать + + + + Get + Получить + + + + Put... + Поместить... + + + + Delete + Удалить + + + + Refresh + Обновить + + + + Cleanup + Очистка + + + + Purge + Чистка + + + + Delete folder + Удалить папку + + + + Yes + Да + + + + No + Нет + + + + It is not possible to delete the folder. + Невозможно удалить папку. + + + + The local path does not exist: + Не существует локального пути: + + + + Refreshing... + Обновление... + + + + + + Refresh operation failed: + + Сбой операции обновления: + + + + + DvItemViewerButtonBar + + + Back + Назад + + + + Forward + Вперед + + + + Up One Level + Уровень выше + + + + Up + Вверх + + + + New Folder + Новая папка + + + + New + Новый + + + + Icons View + Просмотр иконок + + + + Icon + иконки + + + + List View + Посмотреть список + + + + List + Список + + + + Export File List + Экспорт списка файлов + + + + DvItemViewerPanel + + + Save File List + Сохранить список файлов + + + + File List (*.csv) + Список файлов (* .csv) + + + + ExportCurvePopup + + + Export Curve + Экспорт кривой + + + + Export + Экспорт + + + + ExportLevelPopup + + + Export Level + Экспорт уровня + + + + Export + Экспорт + + + + Format: + Формат: + + + + Retas Compliant + Cовместимый с Retas + + + + Options + Опции + + + + File Browser + Браузер файлов + + + + Export Options + Параметры экспорта + + + + The file name cannot be empty or contain any of the following characters:(new line) \ / : * ? " | + Имя файла не может быть пустым или содержать любой из следующих символов: (новая строка) \ /: *? "| + + + + ExportLevelPopup::ExportOptions + + + Background Color: + Цвет фона: + + + + No Antialias + Без сглаживания + + + + Vectors Export Box + Вектор экспорт бокс + + + + H Resolution: + H Resolution: + + + + V Resolution: + V Resolution: + + + + Scale: + Масштаб: + + + + Vectors Thickness + Толщина векторов + + + + Mode: + Режим: + + + + Scale Thickness + Масштаб толщины + + + + Add Thickness + Добавить толщину + + + + Constant Thickness + Постоянная толщина + + + + Start: + Старт: + + + + End: + Конец: + + + + DPI: + DPI: + + + + ExportPanel + + + + Export + Экспортировать + + + + Save in: + Сохранить в: + + + + File Name: + Имя файла: + + + + Options + Опции + + + + File Format: + Формат файла: + + + + Use Markers + Использовать маркеры + + + + ExportScenePopup + + + Export Scene + Экспортировать сцену + + + + Choose Existing Project + Выберите существующий проект + + + + Create New Project + Создать новый проект + + + + Name: + Имя: + + + + Export + Экспорт + + + + Cancel + Отмена + + + + The folder you selected is not a project. + Выбранная вами папка не является проектом. + + + + There was an error exporting the scene. + При экспорте сцены произошла ошибка. + + + + + The project name cannot be empty or contain any of the following characters:(new line) \ / : * ? " | + Имя проекта не может быть пустым или содержать любой из следующих символов: (новая строка) \ /: *? "| + + + + The project name you specified is already used. + Имя проекта, которое вы указали, уже используется. + + + + FarmServerListView + + + Activate + Активировать + + + + Deactivate + Деактивировать + + + + FileBrowser + + + Some files that you want to edit are currently opened. Close them first. + Некоторые файлы, которые вы хотите редактировать, в настоящее время открыты. Закройте их сначала. + + + + Some files that you want to unlock are currently opened. Close them first. + Некоторые файлы, которые вы хотите разблокировать, в настоящее время открыты. Закройте их сначала. + + + + Folder: + Папка: + + + + Open folder failed + Не удалось открыть папку + + + + The input folder path was invalid. + Недопустимый путь к папке ввода. + + + + Can't change file extension + Невозможно изменить расширение файла + + + + Can't set a drawing number + Невозможно установить номер рисунка + + + + Can't rename. File already exists: + Невозможно переименовать. Файл уже существует: + + + + Couldn't rename + Не удалось переименовать + + + + Preview Screensaver + Просмотр Screensaver + + + + Install Screensaver + Установка Screensaver + + + + Load As Sub-xsheet + Загрузить как Sub-xsheet + + + + Load + Загрузить + + + + Rename + Переименовать + + + + Convert to Painted TLV + Конвертировать в окрашенный TLV + + + + Convert to Unpainted TLV + Конвертировать в неокрашенный TLV + + + + Version Control + Контроль версий + + + + + Edit + Редактировать + + + + + Edit Frame Range... + Изменить диапазон кадров... + + + + + + Put... + Поместить... + + + + + Revert + Возвратить + + + + + + + + Get + Получить + + + + Delete + Удалить + + + + Get Revision... + Пересмотреть... + + + + Unlock + Разблокировать + + + + + + Edit Info + Изменить инфо + + + + Revision History... + Пересмотреть историю... + + + + Unlock Frame Range + Разблокировать диапазон кадров + + + + Save Scene + Сохранить сцену + + + + Scene name: + Название сцены: + + + + There was an error copying %1 to %2 + Произошла ошибка при копировании %1 в %2 + + + + Convert To Unpainted Tlv + Конвертировать в неокрашенный TLV + + + + + Warning: level %1 already exists; overwrite? + Предупреждение: уровень %1 уже существует; перезаписать? + + + + + Yes + Да + + + + + No + Нет + + + + Done: All Levels converted to TLV Format + Выполнено: все уровни конвертированы в формат TLV + + + + Convert To Painted Tlv + Конвертировать в окрашенный TLV + + + + Done: 2 Levels converted to TLV Format + Выполнено: 2 уровня, конвертированы в формат TLV + + + + New Folder + Новая папка + + + + It is not possible to create the %1 folder. + Невозможно создать папку %1. + + + + FileBrowserPopup + + + + File name: + Имя файла: + + + + OK + OK + + + + Cancel + Отмена + + + + Apply + Применить + + + + Folder name: + Имя папки: + + + + + Invalid file + Неверный файл + + + + FileData + + + It is not possible to find the %1 level. + Невозможно найти уровень %1. + + + + There was an error copying %1 + Произошла ошибка при копировании %1 + + + + FileSelection + + + Collecting assets... + Сбор активов ... + + + + + Abort + Сбросить + + + + Importing scenes... + Импорт сцен... + + + + FileSettingsPopup + + + Save in: + Сохранить в: + + + + File Format: + Формат файла: + + + + Filmstrip + + + + + + - No Current Level - + - Нет текущего уровня - + + + + Level Strip + Level Strip + + + + Level: + Уровень: + + + + FilmstripFrameHeadGadget + + + Click to Toggle Fixed Onion Skin + Включить фиксированный Onion Skin + + + + Click / Drag to Toggle Onion Skin + Клик/Перетащить Onion Skin + + + + Drag to Extend Onion Skin, Double Click to Toggle All + Перетащите, чтобы расширить Onion Skin.Двойной клик, чтобы переключить все + + + + FilmstripFrames + + + no icon + нет значка + + + + Linear + Линейный + + + + FlipBook + + + + Flipbook + Flipbook + + + + The file name cannot be empty or contain any of the following characters:(new line) \ / : * ? " | + Имя файла не может быть пустым или содержать любой из следующих символов: (новая строка) \ /: *? "| + + + + It is not possible to save because the selected file format is not supported. + Это невозможно сохранить, потому что выбранный формат файла не поддерживается. + + + + File %1 already exists. +Do you want to overwrite it? + Файл «%1» уже существует. +Хотите перезаписать его? + + + + It is not possible to save Flipbook content. + Невозможно сохранить содержимое Flipbook. + + + + Saved %1 frames out of %2 in %3 + Сохранено %1 кадр из %2 в %3 + + + + There are no rendered images to save. + Нет отрендеренных изображений для сохранения. + + + + + It is not possible to take or compare snapshots for Toonz vector levels. + Невозможно получить или сравнить snapshots для векторных уровней Toonz. + + + + Rendered Frames :: From %1 To %2 :: Step %3 + Рендер кадров :: От %1 до %2 :: Шаг %3 + + + + :: Shrink + :: Сокращать + + + + FormatSettingsPopup + + + File Settings + Настройки файла + + + + FrameHeadGadget + + + Current Frame + Текущий кадр + + + + Fixed Onion Skin Toggle + Переключение фиксированного Onion Skin + + + + FxParamEditorPopup + + + Fx Settings + Настройки Fx + + + + ImageViewer + + + + + Flipbook Histogram + Гистограмма Flipbook + + + + Clone Preview + Клонировать предпросмотр + + + + Unfreeze Preview + Разморозить предпросмотр + + + + Freeze Preview + Заморозить предпросмотр + + + + Regenerate Preview + Регенерировать предпросмотр + + + + Regenerate Frame Preview + Регенерировать предпросмотр кадра + + + + Load / Append Images + Загрузка / Добавление изображений + + + + Save Images + Сохранить изображения + + + + Reset View + Вид по умолчанию + + + + Fit To Window + По размеру окна + + + + Exit Full Screen Mode + Выход из полноэкранного режима + + + + Full Screen Mode + Полноэкранный режим + + + + Show Histogram + Показать гистограмму + + + + Swap Compared Images + Поменять сравниваемые изображения + + + + + :: Zoom : + :: Зум : + + + + ImportMagpieFilePopup + + + Import Magpie File + Импортировать файл Magpie + + + + Load + Загрузить + + + + %1 does not exist. + %1 не существует. + + + + InbetweenDialog + + + + Inbetween + промежуточные кадры + автофазовка + + + + Linear + Линейная + + + + Ease In + Ease In + + + + Ease Out + Ease Out + + + + Ease In / Ease Out + Ease In / Ease Out + + + + Interpolation: + Интерполяция: + + + + Cancel + Отмена + + + + InsertFxPopup + + + FX Browser + Браузер FX + + + + Insert + Вставить + + + + Add + Добавить + + + + Replace + Заменить + + + + Macro + Macro + + + + Remove Macro FX + Удалить Macro FX + + + + Remove Preset + Удалить пресет + + + + Are you sure you want to delete %1? + Вы действительно хотите удалить %1? + + + + Yes + Да + + + + No + Нет + + + + It is not possible to delete %1. + Удалить %1 невозможно. + + + + LevelCreatePopup + + + New Level + Новый уровень + + + + Width: + Ширина: + + + + Height: + Высота: + + + + DPI: + DPI: + + + + OK + OK + + + + Cancel + Отмена + + + + Apply + Применить + + + + Name: + Имя: + + + + From: + От: + + + + To: + До: + + + + Step: + Шаг: + + + + Increment: + Инкремент: + + + + Type: + Тип: + + + + Save In: + Сохранить в: + + + + No level name specified: please choose a valid level name + Имя уровня не определено: выберите допустимое имя уровня + + + + Invalid frame range + Недопустимый диапазон кадров + + + + Invalid increment value + Недопустимое значение инкремента + + + + Invalid step value + Недопустимое значение шага + + + + + The level name specified is already used: please choose a different level name + Указанное имя уровня уже используется: выберите другое имя уровня + + + + Folder %1 doesn't exist. +Do you want to create it? + Папки %1 не существует. +Вы хотите создать ее? + + + + Unable to create + Не удалось создать + + + + LevelSettingsPopup + + + + DPI: + DPI: + + + + + Premultiply + Premultiply + + + + + White As Transparent + Белый как прозрачный + + + + + Add Antialiasing + Добавить сглаживание + + + + + Antialias Softness: + Мягкость сглаживания: + + + + + Subsampling: + Субсемплинг: + + + + Level Settings + Настройки уровня + + + + Scan Path: + Путь сканирования: + + + + Forced Squared Pixel + Принудительно квадратные пиксели + + + + Width: + Ширина: + + + + Height: + Высота: + + + + Use Camera DPI + Использовать DPI камеры + + + + Camera DPI: + Камера DPI: + + + + Image DPI: + Изображение DPI: + + + + Resolution: + Разрешение: + + + + Name && Path + Имя && Путь + + + + Name: + Имя: + + + + Path: + Путь: + + + + Resolution + Разрешение + + + + DPI && Resolution + DPI && Разрешение + + + + The file %1 is not a sound level. + Файл %1 не является уровнем звука. + + + + LineTestCapturePane + + + Name: + Имя: + + + + Frame: + Кадр: + + + + Increment: + Инкремент: + + + + Step: + Шаг: + + + + Mode: + Режим: + + + + New + Новый + + + + Overwite + Перезаписать + + + + Insert + Вставить + + + + Onion Skin + Onion Skin + + + + View Frame + Просмотр кадра + + + + Fade: + наверное, лучше всёже оставить Fade ? + Затухание: + + + + Connection + Соединение + + + + Capture + Захват + + + + Capture Settings + Настройки захвата + + + + File Settings + Настройки файла + + + + Bad Selection. + Плохой выбор. + + + + No Device Defined. + Не определено устройство. + + + + Cannot connect Camera + Не удается подключить камеру + + + + Device Disconnected. + Устройство отключено. + + + + LineTest Capture + LineTest захват + + + + LineTestPane + + + Preview + Предпросмотр + + + + Untitled + Безымянный + + + + Scene: + Сцена: + + + + :: Frame: + :: Кадр: + + + + :: Level: + :: Уровень: + + + + Level: + Уровень: + + + + LinesFadePopup + + + Color Fade + Color Fade + + + + Fade: + Затухание: + + + + Intensity: + Интенсивность: + + + + Apply + Применить + + + + LoadColorModelPopup + + + Load Color Model + Загрузить цветовую модель + + + + Frames : + Кадры: + + + + Load + Загрузить + + + + LoadCurvePopup + + + Load Curve + Загрузить кривую + + + + Load + Загрузить + + + + LoadFolderPopup + + + Load Folder + Загрузить папку + + + + LoadImagesPopup + + + Load Images + Загрузить изображения + + + + Append + Прибавить + + + + From: + От: + + + + To: + До: + + + + Step: + Шаг: + + + + Shrink: + Сокращение: + + + + Load + Загрузить + + + + Load / Append Images + Загрузка / Добавление изображений + + + + LoadLevelPopup + + + Load Level + Загрузить уровень + + + + Load + Загрузить + + + + TLV Caching Behavior + Поведение TLV кэширования + + + + Load Subsequence Level + Загрузить субсеквенционный уровень + + + + Arrangement in Xsheet + Расположение в Xsheet + + + + (FILE DOES NOT EXIST) + (ФАЙЛ НЕ СУЩЕСТВУЕТ) + + + + On Demand + По требованию + + + + All Icons + Все иконки + + + + All Icons & Images + Все иконки и изображения + + + + + From: + От: + + + + + To: + До: + + + + Step: + Шаг: + + + + Inc: + ? + Inc: + + + + Level Name: + Имя уровня: + + + + Frames: + Кадры: + + + + :: + :: + + + + LoadScenePopup + + + Load Scene + Загрузить сцену + + + + Load + Загрузить + + + + is not a scene file. + не является файлом сцены. + + + + does not exist. + не существует. + + + + LoadSettingsPopup + + + Load Cleanup Settings + Загрузить настройки очистки + + + + Load + Загрузить + + + + %1 does not exist. + %1 не существует. + + + + LoadSubScenePopup + + + Load Sub-Xsheet + Загрузить Sub-Xsheet + + + + Load + Загрузить + + + + is not a scene file. + не является файлом сцены. + + + + does not exist. + не существует. + + + + LoadTaskListPopup + + + Load Task List + Загрузить список задач + + + + Load + Загрузить + + + + does not exist. + не существует. + + + + It is possible to load only TNZBAT files. + Можно загружать только файлы TNZBAT. + + + + LoadTaskPopup + + + Add + Добавить + + + + Add Render Task to Batch List + Добавить задачу рендеринга в пакетный список + + + + Add Cleanup Task to Batch List + Добавить задачу очистки в пакетный список + + + + does not exist. + не существует. + + + + you can load only TNZ files for render task. + Вы можете загружать только файлы TNZ для задачи рендеринга. + + + + you can load only TNZ or CLN files for cleanup task. + Вы можете загружать только файлы TNZ или CLN для задачи очистки. + + + + LocatorPopup + + + Locator + Локатор + + + + MagpieFileImportPopup + + + + Import Magpie File + Импортировать файл Magpie + + + + Frame Range + Диапазон кадров + + + + To: + До: + + + + From: + От: + + + + Animation Level + Уровень анимации + + + + Level: + Уровень: + + + + Phoneme + Фонема + + + + Import + Импорт + + + + Cancel + Отмена + + + + + The file path is missing. + Отсутствует путь к файлу. + + + + MainWindow + + + Untitled + Безымянный + + + + Cleanup + Очистка + + + + PltEdit + PltEdit + + + + InknPaint + InknPaint + + + + Xsheet + Xsheet + + + + About OpenToonz + Про OpenToonz + + + + Close + Закрыть + + + + Cannot delete + Не удается удалить + + + + &New Scene + &Новая сцена + + + + &Load Scene... + &Загрузить сцену... + + + + &Save Scene + &Сохранить сцену + + + + &Save Scene As... + &Сохранить сцену как... + + + + &Save All + &Сохранить все + + + + &Revert Scene + &Вернуть сцену + + + + &Load Folder... + &Загрузить папку ... + + + + &Load As Sub-xsheet... + &Загрузить как Sub-xsheet... + + + + &Open Recent Scene File + &Открыть предыдущую сцену + + + + &Open Recent Level File + &Открыть предыдущий уровень + + + + &Clear Recent Scene File List + &Очистить список предыдущих сцен + + + + &Clear Recent level File List + &Очистить список предыдущих уровней + + + + &New Level... + &Новый уровень... + + + + &Load Level... + &Загрузить уровень... + + + + &Save Level + &Сохранить уровень + + + + &Save All Levels + &Сохранить все уровни + + + + &Save Level As... + &Сохранить уровень как... + + + + &Export Level... + &Экспортировать уровень... + + + + &Convert File... + &Конвертировать файл... + + + + &Save Palette As... + &Сохранить палитру как... + + + + &Save Palette + &Сохранить палитру + + + + &Load Color Model... + &Загрузить цветовую модель... + + + + &Import Magpie File... + &Импортировать файл Magpie... + + + + &New Project... + &Новый проект... + + + + &Project Settings... + &Настройки проекта... + + + + &Save Default Settings + &Сохранить настройки по умолчанию + + + + &Output Settings... + &Настройки вывода ... + + + + &Preview Settings... + &Настройки предпросмотра... + + + + &Render + &Рендер + + + + &Fast Render to MP4 + &Быстрый рендер в MP4 + + + + &Preview + &Предпросмотр + + + + &Save Previewed Frames + &Сохранить кадры предпросмотра + + + + &Regenerate Preview + &Регенерировать предпросмотр + + + + &Regenerate Frame Preview + &Регенерировать предпросмотр кадра + + + + &Clone Preview + &Клонировать предпросмотр + + + + &Freeze//Unfreeze Preview + &Заморозить//разморозить предпросмотр + + + + Freeze Preview + Заморозить предпросмотр + + + + Unfreeze Preview + Разморозить предпросмотр + + + + &Save As Preset + &Сохранить как пресет + + + + &Preferences... + &Настройки программы... + + + + &Configure Shortcuts... + &Настройка горячих клавиш... + + + + &Print Xsheet + &Распечатать Xsheet + + + + Run Script... + Скрипты... + + + + Open Script Console... + Открыть консоль скриптов ... + + + + &Print Current Frame... + &Распечатать текущий кадр... + + + + &Quit + &Выйти + + + + Reload qss + Перезагрузить qss + + + + &Load Recent Image Files + &Загрузить предыдущие файлы изображений + + + + &Clear Recent Flipbook Image List + &Очистить список предыдущих изображений Flipbook + + + + Preview Fx + Предпросмотр Fx + + + + &Select All + &Выбрать все + + + + &Invert Selection + &Обратить выделенное + + + + &Undo + &Undo + + + + &Redo + &Redo + + + + &Cut + &Вырезать + + + + &Copy + &Копировать + + + + &Insert Paste + &Вставить + + + + &Merge + &Слияние + + + + &Paste Into + &Поместить в + + + + &Paste Color && Name + &Вставить цвет && Имя + + + + Paste Color + Вставить цвет + + + + Paste Name + Вставить имя + + + + Get Color from Studio Palette + Взять цвет из Studio Palette + + + + Toggle Link to Studio Palette + Переключить линк на Studio Palette + + + + Remove Reference to Studio Palette + Удалить референс на Studio Palette + + + + &Delete + &Удалить + + + + &Insert + &Вставить + + + + &Group + &Сгруппировать + + + + &Ungroup + &Разгруппировать + + + + &Bring to Front + &На передний план + + + + &Bring Forward + &На порядок выше + + + + &Send Back + &На порядок ниже + + + + &Send Backward + &На задний план + + + + &Enter Group + &Войти в группу + + + + &Exit Group + &Выйти из группы + + + + &Remove Vector Overflow + &Удалить векторные излишки + + + + &Define Scanner... + Определить сканер... + + + + &Scan Settings... + &Настройки сканера... + + + + &Scan + &Сканирование + + + + &Autocenter... + &Автоцентр... + + + + &Set Cropbox + &Установить область обрезки + + + + &Reset Cropbox + &Сбросить область обрезки + + + + &Cleanup Settings... + &Настройки очистки... + + + + &Preview Cleanup + &Просмотр очистки + + + + &Camera Test + &Тестирование камеры + + + + &Opacity Check + &Opacity Check + + + + &Cleanup + &Очистка + + + + &Camera Capture... + &Захват камеры... + + + + &Add Frames... + &Добавить кадры... + + + + &Renumber... + &Пересчитать... + + + + &Replace Level... + &Заменить уровень ... + + + + &Revert to Cleaned Up + &Возврат к очистке + + + + &Revert to Last Saved Version + &Возврат к последней сохраненной версии + + + + &Expose in Xsheet + &Экспонировать в Xsheet + + + + &Display in Level Strip + &Отобразить в Level Strip + + + + &Level Settings... + &Настройки уровня... + + + + Adjust Levels... + Регулировать уровени... + + + + Adjust Thickness... + Отрегулировать толщину... + + + + &Antialias... + &Сглаживание... + + + + &Binarize... + &Бинаризация... + + + + &Brightness and Contrast... + &Яркость и контрастность... + + + + &Color Fade... + &Color Fade... + + + + &Capture + &Захват + + + + &Canvas Size... + &Размер холста... + + + + &Info... + &Инфо... + + + + &View... + &Окно... + + + + &Remove All Unused Levels + &Удалить все неиспользуемые уровни + + + + &Replace Parent Directory... + &Заменить родительский каталог ... + + + + &Scene Settings... + &Настройки сцены... + + + + + &Camera Settings... + &Настройки камеры... + + + + &Open Sub-xsheet + &Открыть Sub-xsheet + + + + &Close Sub-xsheet + &Закрыть Sub-xsheet + + + + Explode Sub-xsheet + Разбить Sub-xsheet + + + + Collapse + Коллапс + + + + Toggle Edit in Place + Переключить Редактировать на месте + + + + &Save Sub-xsheet As... + &Сохранить Sub-xsheet как... + + + + Resequence + Пересчитать секвенцию + + + + Clone Sub-xsheet + Клонировать Sub-xsheet + + + + &Apply Match Lines... + &Применить Match Lines... + + + + &Merge Tlv Levels... + &Объединить уровни Tlv ... + + + + &Delete Match Lines + &Удалить Match Lines + + + + &Delete Lines... + &Удалить линии... + + + + &Merge Levels + &Объединить уровни + + + + &New FX... + &Новый FX... + + + + &New Output + &Новый вывод + + + + &Edit FX... + &Редактировать FX... + + + + Insert Frame + Вставить кадр + + + + Remove Frame + Удалить кадр + + + + Insert Multiple Keys + Вставить несколько ключей + + + + Remove Multiple Keys + Удаление нескольких ключей + + + + &Reverse + &Обратить + + + + &Swing + &Добавить в обратном порядке + + + + &Random + &Случайно + + + + &Autoexpose + &Автоэкспонирование + + + + &Repeat... + &Повторение... + + + + &Reset Step + &Сбросить шаг + + + + &Increase Step + &Увеличить шаг + + + + &Decrease Step + &Уменьшить шаг + + + + &Step 2 + &Шаг 2 + + + + &Step 3 + &Шаг 3 + + + + &Step 4 + &Шаг 4 + + + + &Each 2 + &Каждые 2 + + + + &Each 3 + &Каждые 3 + + + + &Each 4 + &Каждые 4 + + + + &Roll Up + думаю, так будет понятнее, чем "все кадры кроме первого наверх" + &Первый вниз + + + + &Roll Down + &Последний наверх + + + + &Time Stretch... + &Растяжение времени... + + + + &Duplicate Drawing + &Дублировать рисунок + + + + &Autorenumber + &Автопересчет + + + + &Clone + &Клонировать + + + + Drawing Substitution Forward + Заправка чертежа вперед + + + + Drawing Substitution Backward + Заправка чертежа назад + + + + Similar Drawing Substitution Forward + Заправка аналогичных чертежей вперед + + + + Similar Drawing Substitution Backward + Заправка аналогичных чертежей назад + + + + 1's + по 1 + + + + 2's + по 2 + + + + 3's + по 3 + + + + 4's + по 4 + + + + &Set Key + &Установить ключ + + + + &Camera Box + &Граница камеры + + + + &Table + &Таблица + + + + &Field Guide + &Гид поля + + + + &Raster Bounding Box + &Растровая граница + + + + &Field Guide in Capture Window + &Гид поля в окне захвата + + + + &Safe Area + ?? + &Безопасная зона + + + + &Camera BG Color + &Камера Цвет фона + + + + &Guide + &Ориентир + + + + &Ruler + &Линейка + + + + &Transparency Check + &Проверка прозрачности + + + + &Ink Check + &Проверка штриха + + + + &Ink#1 Check + &Проверка штриха#1 + + + + &Paint Check + &Проверка цвета + + + + Inks &Only + Только &линии + + + + &Fill Check + &Проверка заполнения + + + + &Black BG Check + &На чёрном фоне + + + + &Gap Check + &Проверка замкнутости + + + + Shift and Trace + Сдвинуть и калькировать + + + + Edit Shift + Редактировать сдвиг + + + + No Shift + Без сдвига + + + + Reset Shift + Сбросить сдвиг + + + + &Visualize Vector As Raster + &Отображать вектор как растр + + + + &Histogram + &Гистограмма + + + + Link Flipbooks + Link Flipbooks + + + + Play + Play + + + + Loop + Loop + + + + Pause + Pause + + + + First Frame + Первый кадр + + + + Last Frame + Последний кадр + + + + Previous Frame + Предыдущий кадр + + + + Next Frame + Следующий кадр + + + + Next Drawing + Следующий рисунок + + + + Prev Drawing + Предыдущий рисунок + + + + Next Step + Следующий шаг + + + + Prev Step + Предыдущий шаг + + + + Red Channel + Красный канал + + + + Green Channel + Зеленый канал + + + + Blue Channel + Голубой канал + + + + Matte Channel + Матовый канал + + + + Red Channel Greyscale + Красный канал в оттенках серого + + + + Green Channel Greyscale + Зеленый канал в оттенках серого + + + + Blue Channel Greyscale + Голубой канал в оттенках серого + + + + Compare to Snapshot + Сравнить с Snapshot + + + + Toggle Autofill on Current Palette Color + Переключить автозаполнение на текущий цвет палитры + + + + &Lock Room Panes + &Заблокировать Room Panes + + + + &Export + &Экспортировать + + + + &File Browser + &Браузер файлов + + + + &Flipbook + &Flipbook + + + + &Function Editor + &Редактор функций + + + + &Level Strip + &Level Strip + + + + &Palette + &Палитра + + + + &Palette Gizmo + &Палитра Gizmo + + + + &Delete Unused Styles + &Удалить неиспользуемые стили + + + + &Tasks + &Задания + + + + &Batch Servers + &Пакетные серверы + + + + &Message Center + &Центр сообщений + + + + &Color Model + &Цветная модель + + + + &Studio Palette + &Палитра Studio + + + + &Schematic + &Схемы + + + + &Cleanup Settings + &Настройки очистки + + + + &Scene Cast + &Состав сцены + + + + &Style Editor + &Редактор стилей + + + + &Toolbar + &Панель инструментов + + + + &Tool Option Bar + &Панель настройки инструментов + + + + &Viewer + &Просмотрщик + + + + &LineTest Capture + &LineTest захват + + + + &LineTest Viewer + &LineTest просмотрщик + + + + &Xsheet + &Xsheet + + + + &ComboViewer + &ComboViewer + + + + &History + &История + + + + Record Audio + Запись аудио + + + + &Reset to Default Rooms + &Сброс Rooms по умолчанию + + + + Toggle Maximize Panel + Переключить максимизацию панелей + + + + Toggle Main Window's Full Screen Mode + Переключить главное окно в полноэкранный режим + + + + &About OpenToonz... + &Про OpenToonz... + + + + &Startup Popup... + &Стартовое окно... + + + + &Blend colors + &Смешивание цветов + + + + Onion Skin Toggle + Переключить Onion Skin + + + + Zero Thick Lines + Линии нулевой толщины + + + + Duplicate + Дублировать + + + + Show Folder Contents + Показать содержимое папки + + + + Convert... + Конвертировать... + + + + Collect Assets + Сбор активов + + + + Import Scene + Импортировать сцену + + + + Export Scene... + Экспортировать сцену... + + + + Convert to Vectors... + Конвертировать в вектор... + + + + Tracking... + Трекинг... + + + + Remove Level + Удалить уровень + + + + Add As Render Task + Добавить как задачу рендеринга + + + + Add As Cleanup Task + Добавить как задачу очистки + + + + Select All Keys in this Row + Выделить все ключи в этом ряду + + + + Select All Keys in this Column + Выделить все ключи в этой колонке + + + + Select All Keys + Выделить все ключи + + + + Select All Following Keys + Выделить все следующие ключи + + + + Select All Previous Keys + Выделить все предыдущие ключи + + + + Select Previous Keys in this Column + Выделить предыдущие ключи в этой колонке + + + + Select Following Keys in this Column + Выделить все следующие ключи в этой колонке + + + + Select Previous Keys in this Row + Выделить предыдущие ключи в этом ряду + + + + Select Following Keys in this Row + Выделить все следующие ключи в этом ряду + + + + Invert Key Selection + Инвертировать выбор ключей + + + + Set Acceleration + Установка ускорения + + + + Set Deceleration + Установка замедления + + + + Set Constant Speed + Установить постоянную скорость + + + + Reset Interpolation + Сбросить интерполяцию + + + + Fold Column + Свернуть колонки + + + + Show This Only + Показать только это + + + + Show Selected + Показать выбранные + + + + Show All + Показать все + + + + Hide Selected + Скрыть выбранные + + + + Hide All + Скрыть все + + + + Toggle Show/Hide + Переключить: Показать/Спрятать + + + + ON This Only + ВКЛ только это + + + + ON Selected + ВКЛ выбранные + + + + ON All + ВКЛ все + + + + OFF All + ВЫКЛ все + + + + OFF Selected + ВЫКЛ выбранные + + + + Swap ON/OFF + Переключить ВКЛ/ВЫКЛ + + + + Lock This Only + Заблокировать это только + + + + Lock Selected + Заблокировать выбранные + + + + Lock All + Заблокировать все + + + + Unlock Selected + Разблокировать выбранные + + + + Unlock All + Разблокировать все + + + + Swap Lock/Unlock + Переключатель Блокировать/Разблокировать + + + + Hide Upper Columns + Скрыть верхние колонки + + + + Edit Tool + Инструмент редактирования + + + + Selection Tool + Инструмент выделения + + + + Brush Tool + Кисть + + + + Geometric Tool + Геометрический инструмент + + + + Type Tool + Инструмент шрифта + + + + Fill Tool + Заливка + + + + Paint Brush Tool + Инструмент покраски + + + + Eraser Tool + Ластик + + + + Tape Tool + Скотч + + + + Style Picker Tool + Инструмент выбора стиля + + + + RGB Picker Tool + Инструмент RGB Picker + + + + Control Point Editor Tool + Редактор контрольных точек + + + + Pinch Tool + Пинч + + + + Pump Tool + Насос + + + + Magnet Tool + Магнит + + + + Bender Tool + Клещи + + + + Iron Tool + Утюг + + + + Cutter Tool + Нож + + + + Skeleton Tool + Скелет + + + + Tracker Tool + Трекер + + + + Hook Tool + Крюк + + + + Zoom Tool + Лупа + + + + Rotate Tool + Поворот + + + + Hand Tool + Рука + + + + Plastic Tool + Plastic Tool + + + + Ruler Tool + Рулетка + + + + Finger Tool + Палец + + + + Zoom In + Приблизить + + + + Zoom Out + Отдалить + + + + Reset View + Вид по умолчанию + + + + Fit to Window + По размеру окна + + + + Actual Pixel Size + Фактический пиксельный размер + + + + Show//Hide Full Screen + Показать // Скрыть полный экран + + + + Full Screen Mode + Полноэкранный режим + + + + Exit Full Screen Mode + Выход из полноэкранного режима + + + + Refresh Folder Tree + Обновить дерево папок + + + + Refresh + Обновить + + + + Global Key + Глобальный ключ + + + + Brush size - Increase max + Размер кисти - Увеличить макс + + + + Brush size - Decrease max + Размер кисти - Уменьшение макс + + + + Brush size - Increase min + Размер кисти - Увеличить мин + + + + Brush size - Decrease min + Размер кисти - Уменьшение мин + + + + Brush hardness - Increase + Жесткость кисти - увеличение + + + + Brush hardness - Decrease + Жесткость кисти - уменьшение + + + + Auto Group + Автогруппа + + + + Break sharp angles + Разрыв острых углов + + + + Frame range + Диапазон кадров + + + + Inverse kinematics + Инверсная кинематика + + + + Invert + Инвертировать + + + + Manual + Вручную + + + + Onion skin + Onion skin + + + + Orientation + Ориентация + + + + Pencil Mode + Режим карандаша + + + + Preserve Thickness + Сохранять толщину + + + + Pressure Sensitivity + Чувствительность к давлению + + + + Segment Ink + Сегмент Ink + + + + Selective + Селективный + + + + Smooth + Гладкий + + + + Snap + Snap + + + + Auto Select Drawing + Автоматический выбор рисунка + + + + Auto Fill + Автозаполнение + + + + Join Vectors + объединить векторы + + + + Show Only Active Skeleton + Показать только активный скелет + + + + Brush Preset + Пресет кисти + + + + Geometric Shape + Геометрическая форма + + + + Geometric Edge + Геометрический край + + + + Mode + Режим + + + + Mode - Areas + Режим - Области + + + + Mode - Lines + Режим - Линии + + + + Mode - Lines & Areas + Режим - Линии и Области + + + + Type + Тип + + + + Type - Normal + Тип - Стандартный + + + + Type - Rectangular + Тип - Прямоугольный + + + + Type - Freehand + Тип - Свободный + + + + Type - Polyline + Тип - Полилиния + + + + TypeTool Font + Шрифт + + + + TypeTool Size + Размер шрифта + + + + TypeTool Style + Стиль шрифта + + + + Active Axis + Активная ось + + + + Active Axis - Position + Активная ось - позиция + + + + Active Axis - Rotation + Активная ось - вращение + + + + Active Axis - Scale + Активная ось - масштаб + + + + Active Axis - Shear + Активная ось - сдвиг + + + + Active Axis - Center + Активная ось - центр + + + + Build Skeleton Mode + Режим создания скелета + + + + Animate Mode + Режим анимации + + + + Inverse Kinematics Mode + Режим инверсной кинематики + + + + None Pick Mode + Режим выбора - Нет + + + + Column Pick Mode + Режим выбора колонки + + + + Pegbar Pick Mode + Режим выбора Pegbar + + + + Pick Screen + Экран выбора + + + + Create Mesh + Создать сетку + + + + Fill Tool - Areas + Заливка - Области + + + + Fill Tool - Lines + Заливка - Линиии + + + + Style Picker Tool - Areas + Инструмент выбора стиля - Области + + + + Style Picker Tool - Lines + Инструмент выбора стиля - Линии + + + + Toggle FX/Stage schematic + Переключение Схемы Fx + + + + MatchlinesDialog + + + Apply Match Lines + Применить Match Lines + + + + Add Match Line Inks + Добавить Macth Lines Inks + + + + Use Ink: + Использовать Ink: + + + + Apply + Применить + + + + Cancel + Отмена + + + + Ink Usage + Ink использование + + + + Line Stacking Order + Порядок переркрытия линий + + + + L-Up R-Down + Левый-вверх Правый-вниз ?? + L-Up R-Down + + + + L-Down R-Up + ... и здесь наоборот? + L-Down R-Up + + + + Keep +Halftone + Держать +полутон + + + + Fill +Gaps + Заполнить +Пробелы + + + + Line Prevalence + Распространение линий + + + + MenuBarPopup + + + Customize Menu Bar of Room "%1" + Настройка панели меню Room «%1» + + + + OK + OK + + + + Cancel + Отмена + + + + %1 Menu Bar + %1 Панель меню + + + + Menu Items + Пункты меню + + + + N.B. If you put unique title to submenu, it may not be translated to another language. +N.B. Duplicated commands will be ignored. Only the last one will appear in the menu bar. + Примечание: Если вы поместите уникальный заголовок в подменю, он не может быть переведен на другой язык. +Примечание: Дублированные команды будут проигнорированы. В строке меню появится только последняя. + + + + MenuBarTree + + + Insert Menu + Вставить меню + + + + Insert Submenu + Вставить подменю + + + + Remove "%1" + Удалить "%1" + + + + New Menu + Новое меню + + + + MergeCmappedCommand + + + It is not possible to merge tlv columns because no column was selected. + Невозможно объединить колонки tlv, потому что не была выбрана колонка. + + + + It is not possible to merge tlv columns because at least two columns have to be selected. + Невозможно объединить колонки tlv, потому что нужно выбрать как минимум две колонки. + + + + + Merging Tlv Levels... + Слияние уровней Tlv ... + + + + MergeCmappedDialog + + + Ok + Ок + + + + + Cancel + Отмена + + + + Merge Tlv Levels + Объединить уровни Tlv + + + + Save in: + Сохранить в: + + + + File Name: + Имя файла: + + + + Apply + Применить + + + + MergeColumnsCommand + + + It is not possible to execute the merge column command because no column was selected. + Невозможно выполнить команду слияния колонок, потому что не была выбрана колонка. + + + + It is not possible to execute the merge column command because only one columns is selected. + Невозможно выполнить команду слияния, поскольку выбрана только одна колонка. + + + + MeshifyPopup + + + A level with the preferred path "%1" already exists. +What do you want to do? + Уровень с предпочтительным путем «%1» уже существует. +Что вы хотите сделать? + + + + Delete the old level entirely + Полностью удалить старый уровень + + + + Keep the old level and overwrite processed frames + Сохранить старый уровень и перезаписать обработанные кадры + + + + Choose a different path (%1) + Выберите другой путь (%1) + + + + Create Mesh + Создать сетку + + + + Mesh Edges Length: + Длина кромки сетки: + + + + Rasterization DPI: + Растеризация DPI: + + + + Mesh Margin (pixels): + Край сетки (пиксели): + + + + Apply + Применить + + + + Mesh Creation in progress... + Создание сетки выполняется... + + + + Current selection contains mixed image and mesh level types + Текущий выбор содержит смешанные изображения и типы уровней сетки + + + + Current selection contains no image or mesh level types + Текущий выбор не содержит типов изображений или типов сетки + + + + MyScannerListener + + + + Scanning in progress: + Выполняется сканирование: + + + + The pixel type is not supported. + Тип пикселя не поддерживается. + + + + The scanning process is completed. + Процесс сканирования завершен. + + + + There was an error during the scanning process. + Во время сканирования произошла ошибка. + + + + Please, place the next paper drawing on the scanner flatbed, then select the relevant command in the TWAIN interface. + Пожалуйста, разместите следующий документ на планшете сканера, затем выберите соответствующую команду в интерфейсе TWAIN. + + + + Please, place the next paper drawing on the scanner flatbed, then click the Scan button. + Пожалуйста, поместите следующий рисунок бумаги на планшет сканера, затем нажмите кнопку «Сканировать». + + + + MyViewFinder + + + Camera is not available + Камера недоступна + + + + OutputSettingsPopup + + + Preview Settings + Настройки предпросмотра + + + + Output Settings + Настройки вывода + + + + Camera Settings + Настройки камеры + + + + File Settings + Настройки файла + + + + Options + Опции + + + + Use Sub-Camera + Использовать суб-камеру + + + + Apply Shrink to Main Viewer + ? + Применить Shrink к Main Viewer + + + + Other Settings + Другие настройки + + + + Render + Рендер + + + + Add + Добавить + + + + Remove + Удалить + + + + Do stereoscopy + Сделайте стереоскопию + + + + Standard + Стандарт + + + + Improved + Улучшенный + + + + High + Высокий + + + + Triangle filter + Треугольный фильтр + + + + Mitchell-Netravali filter + Фильтр Митчелла-Нетравали + + + + Cubic convolution, a = .5 + Кубическая свертка, a = .5 + + + + Cubic convolution, a = .75 + Кубическая свертка, a = .75 + + + + Cubic convolution, a = 1 + Кубическая свертка, a = 1 + + + + Hann window, rad = 2 + ? + Hann window, rad = 2 + + + + Hann window, rad = 3 + Hann window, rad = 3 + + + + Hamming window, rad = 2 + Hamming window, rad = 2 + + + + Hamming window, rad = 3 + Hamming window, rad = 3 + + + + Lanczos window, rad = 2 + Lanczos window, rad = 2 + + + + Lanczos window, rad = 3 + Lanczos window, rad = 3 + + + + Gaussian convolution + Гауссова свертка + + + + Closest Pixel (Nearest Neighbor) + Ближайший пиксель (ближайший соседний) + + + + Bilinear + Билинейный + + + + 8 bit + 8 бит + + + + 16 bit + 16 бит + + + + Odd (NTSC) + Odd (NTSC) + + + + Even (PAL) + Even (PAL) + + + + + + None + Ничего + + + + Fx Schematic Flows + Схемы Fx + + + + Fx Schematic Terminal Nodes + Fx Схематические терминальные узлы + + + + Single + Один + + + + Half + Половина + + + + All + Все + + + + Large + Большой + + + + Medium + Средний + + + + Small + Маленький + + + + Presets: + Пресеты: + + + + Output Camera: + Выходная камера: + + + + Frame Start: + ? + Начальный кадр: + + + + End: + Конец: + + + + Step: + Шаг: + + + + Shrink: + Сокращение: + + + + Save in: + Сохранить в: + + + + Name: + Имя: + + + + Resample Balance: + Ресемплировать баланс: + + + + Channel Width: + Ширина канала: + + + + Dedicated CPUs: + Выделенные процессоры: + + + + Render Tile: + Render Tile: + + + + Gamma: + Гамма: + + + + Dominant Field: + Доминантное поле: + + + + Frame Rate (linked to Scene Settings): + Частота кадров (связанная с настройками сцены): + + + + Stretch from FPS: + Растяжка по FPS: + + + + To: + До: + + + + Multiple Rendering: + Многократный рендеринг: + + + + Camera Shift: + Сдвиг камеры: + + + + Add preset + Добавить пресет + + + + Enter the name for the output settings preset. + Введите имя для заданных параметров вывода. + + + + Add output settings preset + Добавить рпесет настроек вывода + + + + <custom> + <пользовательский> + + + + Remove preset + Удалить пресет + + + + + + Warning + Предупреждение + + + + OverwriteDialog + + + Level "%1" already exists. + +What do you want to do? + Уровень «%1» уже существует. + +Что вы хотите сделать? + + + + File "%1" already exists. +What do you want to do? + Файл «%1» уже существует. +Что вы хотите сделать? + + + + + Warning! + Внимание! + + + + Keep existing file + Сохранять существующий файл + + + + Overwrite the existing file with the new one + Перезаписать существующий файл новым + + + + Rename the new file adding the suffix + Переименуйте новый файл, добавив суффикс + + + + Apply + Применить + + + + Apply to All + Применить ко всем + + + + Cancel + Отмена + + + + File %1 already exists. +What do you want to do? + Файл «%1» уже существует. +Что вы хотите сделать? + + + + The suffix field is empty. Please specify a suffix. + Поле суффикса пусто. Укажите суффикс. + + + + File %1 exists as well; please choose a different suffix. + Файл %1 существует; Выберите другой суффикс. + + + + Overwrite + Перезаписать + + + + Skip + Пропустить + + + + File "%1" already exists. +Do you want to overwrite it? + Файл «%1» уже существует. +Хотите перезаписать его? + + + + PencilTestPopup + + + Camera Capture + Захват камеры + + + + Refresh + Обновить + + + + File + Файл + + + + Options + Опции + + + + Save images as they are captured + Сохранение изображений при их захвате + + + + Image adjust + Настройка изображения + + + + Upside down + Вверх ногами + + + + Capture white BG + Захват белого фона + + + + Display + Отображение + + + + Show onion skin + Показать Onion Skin + + + + Load Selected Image + Загрузить выбранное изображение + + + + Interval timer + Интервальный таймер + + + + Use interval timer + Использовать интервальный таймер + + + + + Capture +[Return key] + Захватить +[Ключ возврата] + + + + Close + Закрыть + + + + Subfolder + Подпапка + + + + Next Level + Следующий уровень + + + + Video Capture Filter Settings... + Настройки фильтра видеозахвата... + + + + Camera: + Камера: + + + + Resolution: + Разрешение: + + + + Save In: + Сохранить в: + + + + Name: + Имя: + + + + Frame: + Кадр: + + + + File Type: + Тип файла: + + + + Color type: + Тип цвета: + + + + Threshold: + Предел: + + + + Contrast: + Контрастность: + + + + Brightness: + Яркость: + + + + BG reduction: + Редукция фона: + + + + Opacity(%): + Непрозрачность (%): + + + + Interval(sec): + Интервал(сек): + + + + No camera found + Камеры не найдены + + + + - Select camera - + - Выбрать камеру - + + + + + No image selected. Please select an image in the Xsheet. + Изображения не выбраны. Выберите изображение в Xsheet. + + + + The selected image is not in a raster level. + Выбранное изображение не находится на уровне растра. + + + + The selected image size does not match the current camera settings. + Выбранный размер изображения не соответствует текущим настройкам камеры. + + + + + Start Capturing +[Return key] + Запуск захвата +[Ключ возврата] + + + + Stop Capturing +[Return key] + Остановить захват +[Ключ возврата] + + + + No level name specified: please choose a valid level name + Имя уровня не определено: выберите допустимое имя уровня + + + + Folder %1 doesn't exist. +Do you want to create it? + Папки %1 не существует. +Вы хотите создать ее? + + + + Unable to create + Не удалось создать + + + + The level name specified is already used: please choose a different level name. + Указанное имя уровня уже используется: выберите другое имя уровня. + + + + The save in path specified does not match with the existing level. + Указанный путь сохранения не соответствует существующему уровню. + + + + + The captured image size does not match with the existing level. + Размер захваченного изображения не соответствует существующему уровню. + + + + + File %1 does exist. +Do you want to overwrite it? + Файл «%1» уже существует. +Хотите перезаписать его? + + + + Failed to load %1. + Не удалось загрузить %1. + + + + PencilTestSaveInFolderPopup + + + Create Subfolder + Создать подпапку + + + + Infomation + точно не "Info R mation" ? + Информация + + + + Subfolder Name + Имя подпапки + + + + Auto Format: + Автоформат: + + + + Show This on Launch of the Camera Capture + Показать это при запуске захвата камеры + + + + OK + OK + + + + Cancel + Отмена + + + + C- + Sequence + Scene + C- + Секвенция + Сцена + + + + Sequence + Scene + Секвенция + Сцена + + + + Episode + Sequence + Scene + Эпизод + Секвенция + Сцена + + + + Project + Episode + Sequence + Scene + Проект + Эпизод + Секвенция + Сцена + + + + Save In: + Сохранить в: + + + + Project: + Проект: + + + + Episode: + Эпизод: + + + + Sequence: + Секвенция: + + + + Scene: + Сцена: + + + + Subfolder Name: + Subfolder Name: + + + + Subfolder name should not be empty. + Имя подпапки не должно быть пустым. + + + + Subfolder name should not contain following characters: * . " / \ [ ] : ; | = , + Имя подпапки не должно содержать следующих символов: *. "/ \ []:; | =, + + + + Folder %1 already exists. + Папка %1 уже существует. + + + + It is not possible to create the %1 folder. + Невозможно создать папку %1. + + + + PltGizmoPopup + + + Palette Gizmo + Палитра Gizmo + + + + Blend + Blend + + + + Fade + Затухание + + + + Full Matte + Full Matte + + + + Zero Matte + Zero Matte + + + + Scale (%) + Масштаб (%) + + + + Shift (value) + Shift (значение) + + + + Value + Значение + + + + Saturation + Насыщенность + + + + Hue + Hue + + + + Matte + Matte + + + + Fade to Color + Fade to Color + + + + Color + Цвет + + + + PreferencesPopup + + + New Level Format + Формат нового уровня + + + + Assign the new level format name: + Назначьте имя формата нового уровня: + + + + New Format + Новый формат + + + + Numpad keys are assigned to the following commands. +Is it OK to release these shortcuts? + Клавиши Numpad назначаются следующим командам. +Хотите их изменить? + + + + OK + OK + + + + Cancel + Отмена + + + + Preferences + Настройки программы + + + + General + Общее + + + + Use Default Viewer for Movie Formats + Использовать средство просмотра по умолчанию для форматов видео + + + + Minimize Raster Memory Fragmentation * + Минимизация фрагментации растровой памяти * + + + + Save Automatically + Автоматическое сохранение + + + + Automatically Save the Scene File + Автоматически сохранять файл сцены + + + + Automatically Save Non-Scene Files + Автоматическое сохранение файлов без сцены + + + + Show Startup Window when OpenToonz Starts + Показать окно запуска при запуске OpenToonz + + + + Replace Toonz Level after SaveLevelAs command + Заменить уровень Toonz после команды "Сохранить уровень как" + + + + Backup Animation Levels when Saving + Резервные уровни анимации при сохранении + + + + Show Info in Rendered Frames + Показать инфо в кадрах рендера + + + + Watch File System and Update File Browser Automatically + Автоматическая система просмотра файлов и обновление браузера файлов + + + + My Documents/OpenToonz* + My Documents/OpenToonz* + + + + Desktop/OpenToonz* + Desktop/OpenToonz* + + + + Stuff Folder* + Stuff Folder* + + + + Custom* + 3 файла с звёздочкой * выше решил не переводить + Custom* + + + + Custom Project Path(s): + Пользовательский путь(и) проекта: + + + + Advanced: Multiple paths can be separated by ** (No Spaces) + Дополнительно: несколько путей могут быть разделены ** (Нет пробелов) + + + + + + * Changes will take effect the next time you run Toonz + * Изменения вступят в силу в следующий раз, когда вы запустите Toonz + + + + Interface + Интерфейс + + + + All imported images will use the same DPI + Все импортированные изображения будут использовать один и тот же DPI + + + + Move Current Frame by Clicking on Xsheet / Numerical Columns Cell Area + Переместить текущий кадр, нажав на ячейку Xsheet / числовую область ячейки столбца + + + + Open Flipbook after Rendering + Открыть Flipbook после рендеринга + + + + Enable Actual Pixel View on Scene Editing Mode + Включить реальный пиксельный просмотр в режиме редактирования сцены + + + + Display Level Name on Each Marker + Отображать имя уровня на каждом маркере + + + + Show Raster Images Darken Blended in Camstand View + ? + Показать растровые изображения Darken Blended in Camstand View + + + + Show "ABC" Appendix to the Frame Number in Xsheet Cell + Показать «ABC» Приложение к номеру кадра в ячейке Xsheet + + + + Visualization + Визуализация + + + + Show Lines with Thickness 0 + Показать линии с нулевой толщиной + + + + Antialiased region boundaries + Сглаженные границы областей + + + + Loading + Загрузка + + + + Expose Loaded Levels in Xsheet + Экспонировать загруженные уровни в Xsheet + + + + Create Sub-folder when Importing Sub-xsheet + Создание подпапки при импорте Sub-xsheet + + + + Automatically Remove Scene Number from Loaded Level Name + Автоматически удалять номер сцены из имени загруженного уровня + + + + Edit + Редактировать + + + + Import/Export + Импорт/Экспорт + + + + Drawing + Рисунок + + + + DPI: + DPI: + + + + Keep Original Cleaned Up Drawings As Backup + Сохранять оригинальные очищенные рисунки в качестве резервной копии + + + + Multi Layer Style Picker : Switch Levels by Picking + Multi Layer Style Picker: Переключение уровней путем выбора + + + + Use the TLV Savebox to Limit Filling Operations + Используйте команду «Сохранить в TLV» для ограничения заливки + + + + Minimize Savebox after Editing + Минимизировать Savebox после редактирования + + + + Use Numpad and Tab keys for Switching Styles + Использовать клавиши Numpad и Tab для переключения стилей + + + + Xsheet + Xsheet + + + + Xsheet Autopan during Playback + Автозапуск Xsheet во время воспроизведения + + + + Ignore Alpha Channel on Levels in Column 1 + Игнорировать альфа-канал на уровнях в колонке 1 + + + + Show Keyframes on Cell Area + Показывать ключи в областях ячеек + + + + Use Arrow Key to Shift Cell Selection + Использовать клавиши-стрелки для добавления ячеек к выбору + + + + Enable to Input Cells without Double Clicking + Редактировать ввод ячеек одним кликом + + + + Animation + Анимация + + + + Preview + Предпросмотр + + + + Rewind after Playback + Возврат к началу после воспроизведения + + + + Display in a New Flipbook Window + Отображение в новом окне Flipbook + + + + Fit to Flipbook + По размеру Flipbook + + + + Onion Skin + Onion Skin + + + + Onion Skin ON + Вкл Onion Skin + + + + Show Onion Skin During Playback + Показывать Onion Skin во время воспроизведения + + + + Display Lines Only + Отображать только линии + + + + Transparency Check + Проверка прозрачности + + + + Version Control + Контроль версий + + + + Enable Version Control* + Включить контроль версий* + + + + Automatically Refresh Folder Contents + Автоматическое обновление содержимого папки + + + + + Cells Only + Только ячейки + + + + + Cells and Column Data + Ячейки и данные колонок + + + + cm + cm + + + + mm + mm + + + + inch + дюйм + + + + field + поле + + + + pixel + пиксель + + + + Mouse Cursor + Курсор мыши + + + + Viewer Center + Просмотр центра + + + + + + On Demand + По требованию + + + + All Icons + Все иконки + + + + All Icons & Images + Все иконки и изображения + + + + + At Once + Сразу + + + + Pick Every Colors as Different Styles + Выбрать каждый цвет как разные стили + + + + Integrate Similar Colors as One Style + Интеграция похожих цветов в один стиль + + + + Toonz Vector Level + Векторный уровень Toonz + + + + Toonz Raster Level + Растровый уровень Toonz + + + + Raster Level + Растровый уровень + + + + Disabled + Отключено + + + + Enabled + Включено + + + + Use Xsheet as Animation Sheet + Использовать Xsheet как лист анимации + + + + Linear + Линейный + + + + Speed In / Speed Out + Speed In / Speed Out + + + + Ease In / Ease Out + Ease In / Ease Out + + + + Ease In / Ease Out % + Ease In / Ease Out % + + + + Category + Категория + + + + Interval(Minutes): + Интервал (минуты): + + + + Undo Memory Size (MB) + Размер памяти Undo (МБ) + + + + Render Task Chunk Size: + Размер блока рендерных задач: + + + + Additional Project Locations + Дополнительные местоположения проекта + + + + Style: + Стиль: + + + + Pixels Only: + Только пиксели: + + + + Unit: + Единица: + + + + Camera Unit: + Камера: + + + + Rooms*: + Rooms*: + + + + Icon Size * + Размер иконки * + + + + X + X + + + + Viewer Shrink + ? + Viewer Shrink + + + + Step + Шаг + + + + Viewer BG Color + Цвет фона просмотра + + + + Preview BG Color + Цвет фона предпросмотра + + + + ChessBoard Color 1 + Цвет клетки 1 + + + + Chessboard Color 2 + Цвет клетки 2 + + + + Viewer Zoom Center + дальше будет понятно из контекста + Зуммировать относительно + + + + Language *: + Язык *: + + + + Default TLV Caching Behavior + Поведение TLV кэширования по умолчанию + + + + Column Icon + Иконка колонки + + + + Level Settings by File Format: + Настройки уровня по формату файла: + + + + Palette Type on Loading Raster Image as Color Model + Тип палитры при загрузке растрового изображения в качестве цветовой модели + + + + OpenToonz can use FFmpeg for additional file formats. + OpenToonz может использовать FFmpeg для дополнительных форматов файлов. + + + + FFmpeg is not bundled with OpenToonz + FFmpeg не поставляется с OpenToonz + + + + NOTE: This is an experimental feature. + ПРИМЕЧАНИЕ. Это экспериментальная функция. + + + + Please SAVE YOUR WORK before exporting in MP4, WEBM, or GIF format. + СОХРАНИТЕ ВАШУ РАБОТУ перед экспортом в формате MP4, WEBM или GIF. + + + + Please provide the path where FFmpeg is located on your computer. + Укажите путь, где FFmpeg находится на вашем компьютере. + + + + FFmpeg Path: + Путь к FFmpeg: + + + + Number of seconds to wait for FFmpeg to complete processing the output: + Количество секунд ожидания FFmpeg для завершения обработки выходных данных: + + + + Note: FFmpeg begins working once all images have been processed. + Примечание: FFmpeg начинает работать после обработки всех изображений. + + + + FFmpeg Timeout: + FFmpeg перерыв: + + + + Please indicate where you would like exports from Fast Render(MP4) to go. + Укажите, где вы хотите экспортировать Fast Render (MP4) для перехода. + + + + Fast Render Path: + Путь быстрого рендера: + + + + Scan File Format: + Формат файла сканирования: + + + + Default Level Type: + Тип уровня по умолчанию: + + + + Width: + Ширина: + + + + Height: + Высота: + + + + Autocreation: + Автосоздание: + + + + Next/Previous Step Frames: + Шаг следующего/предыдущего кадра: + + + + Cell-dragging Behaviour: + Поведение при перетаскивании: + + + + Default Interpolation: + Интерполяция по умолчанию: + + + + Animation Step: + Шаг анимации: + + + + Blank Frames: + Пустые кадры: + + + + Blank Frames Color: + Цвет пустых кадров: + + + + Paper Thickness: + Толщина бумаги: + + + + Previous Frames Correction: + Коррекция предыдущих кадров: + + + + Following Frames Correction: + Коррекция последующих кадров: + + + + Ink Color on White Bg: + Цвет штриха на белом фоне: + + + + Ink Color on Black Bg: + Цвет штриха на черном фоне: + + + + Paint Color: + Цвет краски: + + + + PreferencesPopup::FormatProperties + + + Level Settings by File Format + Настройки уровня по формату файла + + + + Name: + Имя: + + + + Regular Expression: + Регулярное выражение: + + + + Priority + Приоритет + + + + Previewer + + + The file name cannot be empty or contain any of the following characters:(new line) \ / : * ? " | + Имя файла не может быть пустым или содержать любой из следующих символов: (новая строка) \ /: *? "| + + + + File %1 already exists. +Do you want to overwrite it? + Файл «%1» уже существует. +Хотите перезаписать его? + + + + ProcessingTab + + + Line Processing: + Линия обработки: + + + + + None + Ничего + + + + Greyscale + Оттенки серого + + + + Color + Цвет + + + + Antialias: + Сглаживание: + + + + Standard + Стандарт + + + + Morphological + Морфологический + + + + Autoadjust: + Автокорректировка: + + + + Sharpness: + Резкость: + + + + Despeckling: + Удаление соринок: + + + + MLAA Intensity: + MLAA Интенсивность: + + + + ProjectCreatePopup + + + New Project + Новый проект + + + + OK + OK + + + + Cancel + Отмена + + + + Project Name cannot be empty or contain any of the following characters: + \ / : * ? " < > | + Имя проекта не может быть пустым или содержать любой из следующих символов: + \ /: *? "<> | + + + + Bad project name: '%1' looks like an absolute file path + Плохое имя проекта: «%1» выглядит как абсолютный путь к файлу + + + + Project '%1' already exists + Проект «%1» уже существует + + + + It is not possible to create the %1 project. + Невозможно создать проект %1. + + + + ProjectPopup + + + Project: + Проект: + + + + Project Name: + Название проекта: + + + + Append $scenepath to +drawings + Добавить $ scenepath в +drawings + + + + Append $scenepath to +inputs + Добавить $ scenepath в +inputs + + + + Append $scenepath to +extras + Добавить $ scenepath в +extras + + + + ProjectSettingsPopup + + + Project Settings + Настройки проекта + + + + PsdSettingsPopup + + + Load PSD File + Загрузить файл PSD + + + + Name: + Имя: + + + + Path: + Путь: + + + + Expose in a Sub-xsheet + Экспонировать в Sub-xsheet + + + + Load As: + Загрузить как: + + + + Group Option + Опции группы + + + + Ignore groups + Игнорировать группы + + + + Expose layers in a group as columns in a sub-xsheet + Выставлять слои в группе в виде колонок в sub-xsheet + + + + Expose layers in a group as frames in a column + Выставлять слои в группе в виде кадров в колонке + + + + QApplication + + + New Scene + Новая сцена + + + + Load Scene + Загрузить сцену + + + + Quit + Выйти + + + + QObject + + + + + + + + + + Yes + Да + + + + + + + + + + + No + Нет + + + + + + + + + + + + + + + Overwrite + Перезаписать + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cancel + Отмена + + + + + + + + + + + The current selection is invalid. + Текущий выбор недействителен. + + + + Are you sure you want to override + Вы действительно хотите переопределить + + + + Override + Переопределение + + + + It is not possible to save the curve. + Сохранение кривой невозможно. + + + + It is not possible to load the curve. + Невозможно загрузить кривую. + + + + It is not possible to export data. + Экспорт данных невозможен. + + + + There was an error saving frames for the %1 level. + Были сохранены ошибки в кадрах %1 уровня. + + + + + It is not possible to display the file %1: no player associated with its format + Невозможно отобразить файл %1: нет плеера, связанный с его форматом + + + + The command cannot be executed because the scene is empty. + Команда не может быть выполнена, потому что сцена пуста. + + + + It is not possible to create folder : %1 + Невозможно создать папку: %1 + + + + It is not possible to create a folder. + Невозможно создать папку. + + + + + + The resolution of the output camera does not fit with the options chosen for the output file format. + Разрешение выходной камеры не соответствует параметрам, выбранным для формата выходного файла. + + + + FFmpeg not found, please set the location in the Preferences and restart. + FFmpeg не найден, укажите местоположение в настройках и перезапустите. + + + + It is not possible to complete the rendering. + Выполнение рендеринга невозможно. + + + + + Warning: file %1 already exists. + Внимание: файл %1 уже существует. + + + + + Continue Exporting + Продолжить экспорт + + + + + Stop Exporting + Остановить экспорт + + + + + Exporting level of %1 frames in %2 + Уровень экспорта %1 кадр в %2 + + + + No level selected! + Не выбрано ни одного уровня! + + + + Move Keyframe + Переместить ключевой кадр + + + + + Cleanup Settings + Настройки очистки + + + + The cleanup settings file for the %1 level already exists. + Do you want to overwrite it? + Файл настроек очистки для уровня %1 уже существует. + Вы хотите переписать его? + + + + + Don't Overwrite + Не перезаписывать + + + + + + + The autocentering failed on the current drawing. + Ошибка автоцентра на текущем рисунке. + + + + The cleanup settings for the current level have been modified... + +Do you want to save your changes? + Настройки очистки текущего уровня были изменены ... + +Вы хотите сохранить свои изменения? + + + + + + Save + Сохранить + + + + Discard + Сброс + + + + Move Cleanup Camera + Переместить камеру очистки + + + + Scale Cleanup Camera + Масштабировать камеру очистки + + + + Delete and Re-cleanup : The following files will be deleted. + + + Удаление и повторная очистка. Следующие файлы будут удалены. + + + + + + +Are you sure ? + +Вы уверены? + + + + + + + Delete + Удалить + + + + Are you sure you want to delete the selected cleanup color? + Вы действительно хотите удалить выбранный цвет очистки? + + + + Deactivate Onion Skin + Деактивировать Onion Skin + + + + Limit Onion Skin To Level + Ограничить Onion Skin для уровня + + + + Extend Onion Skin To Scene + Расширьте Onion Skin сцены + + + + Activate Onion Skin + Активировать Onion Skin + + + + + Saving previewed frames.... + Сохранение кадров предпросмотра .... + + + + %1 has an invalid extension format. + %1 имеет недопустимый формат расширения. + + + + + None + Ничего + + + + Edited + Отредактированный + + + + Normal + Нормальный + + + + To Update + Обновить + + + + Modified + Модифицированный + + + + Locked + Заблокированный + + + + Unversioned + Без версии + + + + Missing + Отсутствует + + + + Partially Edited + Частично отредактирован + + + + Partially Locked + Частично заблокирован + + + + Partially Modified + Частично модифицирован + + + + Name + Имя + + + + Path + Путь + + + + + Date Created + Дата создания + + + + + Date Modified + Дата изменения + + + + + Size + Размер + + + + + Frames + Кадры + + + + + Version Control + Контроль версий + + + + + Type + Тип + + + + Replace with copied palette + Заменить скопированной палитрой + + + + Keep original palette + Хранить оригинальную палитру + + + + Insert Frame at Frame %1 + Вставить рамку в кадр %1 + + + + Remove Frame at Frame %1 + Удалить рамку в кадре %1 + + + + Insert Multiple Keys at Frame %1 + Вставка нескольких ключей в кадр %1 + + + + Remove Multiple Keys at Frame %1 + Удаление нескольких ключей в кадре %1 + + + + + Change current drawing %1 + Изменить текущий рисунок %1 + + + + Set Keyframe : %1 + Установить ключевой кадр: %1 + + + + The %1 file has been generated + Файл %1 был сгенерирован + + + + Close SubXsheet + Закрыть SubXsheet + + + + Select a sub-xsheet cell. + Выбрать ячейку sub-xsheet. + + + + Collapse + Коллапс + + + + Collapse (Fx) + Коллапс (Fx) + + + + + Explode + Разбить + + + + + Collapsing columns: what you want to do? + Коллапс колонок: что вы хотите сделать? + + + + + Include relevant pegbars in the sub-xsheet as well. + Включите соответствующие pegbars в sub-xsheet. + + + + + Include only selected columns in the sub-xsheet. + Включите только выбранные колонки в под-xsheet. + + + + Exploding Sub-xsheet: what you want to do? + Разбивка Sub-xsheet: что вы хотите сделать? + + + + Bring relevant pegbars in the main xsheet. + Поместить соответствующие pegbars в основной xsheet. + + + + Bring only columns in the main xsheet. + Поместить только колонки в основной xsheet. + + + + Delete Level : %1 + Удалить уровень : %1 + + + + No unused levels + Нет неиспользованных уровней + + + + It is not possible to delete the used level %1. + Удалить использованный уровень %1 невозможно. + + + + No cleaned up drawings available for the current selection. + Для текущего выбора нет очищенных рисунков. + + + + No saved drawings available for the current selection. + Нет доступных сохраненных рисунков для текущего выбора. + + + + Revert To %1 : Level %2 + Возврат к %1: Уровень %2 + + + + The Revert to Last Saved command is not supported for the current selection. + Команда «Отменить к последнему сохраненному» не поддерживается для текущего выбора. + + + + File %1 doesn't belong to the current project. +Do you want to import it or load it from its original location? + Файл %1 не относится к текущему проекту. +Вы хотите импортировать его или загрузить его из исходного местоположения? + + + + + Import + Импорт + + + + + Load + Загрузить + + + + Load Level %1 + Загрузить уровень %1 + + + + Load and Replace Level %1 + Загрузить и заменить уровень %1 + + + + The camera settings of the scene you are loading as sub-xsheet are different from those of your current scene. What you want to do? + Настройки камеры для сцены, которую вы загружаете в качестве sub-xsheet, отличаются от настроек вашей текущей сцены. Что вы хотите делать? + + + + Keep the sub-xsheet original camera settings. + Сохраните исходные настройки камеры sub-xsheet. + + + + Apply the current scene camera settings to the sub-xsheet. + Примените текущие настройки камеры сцены к sub-xsheet. + + + + Expose Level %1 + Экспонировать уровень %1 + + + + Converting %1 images to tlv format... + Конвертирование %1 изображений в формат tlv... + + + + %1: the current scene has been modified. +What would you like to do? + %1 текущаф сцена была изменена. +Что вы хотите сделать? + + + + Save All + Сохранить все + + + + Save Scene Only + Сохранить только сцену + + + + Discard Changes + Отменить изменения + + + + The following file(s) have been modified. + + + Были изменены следующие файлы. + + + + + + +What would you like to do? + +Что вы хотите сделать? + + + + Save Changes + Сохранить изменения + + + + Anyway + В любом случае + + + + + + + OK + OK + + + + %1 has an invalid file extension. + %1 имеет недопустимое расширение файла. + + + + %1 is an invalid path. + %1 - неверный путь. + + + + The scene %1 already exists. +Do you want to overwrite it? + Сцена %1 уже существует. +Вы хотите переписать ее? + + + + + + Couldn't save %1 + Не удалось сохранить %1 + + + + The level %1 already exists. +Do you want to overwrite it? + Уровень %1 уже существует. +Вы хотите переписать его? + + + + Overwrite Palette + Переписать палитру + + + + Don't Overwrite Palette + Не перезаписывать палитру + + + + The soundtrack %1 already exists. +Do you want to overwrite it? + Саундтрек%1 уже существует. +Вы хотите переписать его? + + + + File %1 doesn't look like a TOONZ Scene + Файл %1 не похож на сцену TOONZ + + + + It is not possible to load the scene %1 because it does not belong to any project. + Невозможно загрузить сцену %1, потому что она не принадлежит ни одному проекту. + + + + The Scene '%1' belongs to project '%2'. +What do you want to do? + Сцена «%1» относится к проекту «%2». +Что вы хотите сделать? + + + + Import Scene + Импортировать сцену + + + + Change Project + Изменить проект + + + + + + There were problems loading the scene %1. + Some files may be missing. + Были проблемы с загрузкой сцены %1. + Некоторые файлы могут отсутствовать. + + + + There were problems loading the scene %1. +Some levels have not been loaded because their version is not supported + Были проблемы с загрузкой сцены %1. +Некоторые уровни не загружены, потому что их версия не поддерживается + + + + This scene is incompatible with pixels only mode of the current OpenToonz version. +What would you like to do? + Эта сцена несовместима с режимом "только пиксели" текущей версии OpenToonz. +Чтовы хотите делать? + + + + Turn off pixels only mode + Отключить режим "только пиксели" + + + + Keep pixels only mode on and resize the scene + Оставить режим "только пиксели" и изменить размер сцены + + + + + It is not possible to load the level %1 + Невозможно загрузить уровень %1 + + + + + No Current Level + Нет текущего уровня + + + + + No Current Scene + Нет текущей сцены + + + + Save the scene first + Сначала сохранить сцену + + + + Save level Failed + Ошибка сохранения уровня + + + + Are you sure you want to save the Default Settings? + Вы действительно хотите сохранить настройки по умолчанию? + + + + It is not possible to load the %1 level. + Невозможно загрузить уровень %1. + + + + The scene %1 doesn't exist. + Сцены %1 не существует. + + + + Revert: the current scene has been modified. +Are you sure you want to revert to previous version? + Revert: текущая сцена была изменена. +Вы действительно хотите вернуться к предыдущей версии? + + + + Revert + Возвратиться + + + + + The copied selection cannot be pasted in the current drawing. + Скопированный выбор не может быть вставлен в текущий рисунок. + + + + + + Paste : Level %1 : Frame + Вставить: Уровень %1: Кадр + + + + Delete Frames : Level %1 : Frame + Удалить кадры: Уровень %1 : Кадр + + + + Cut Frames : Level %1 : Frame + Вырезать кадры : Уровень %1 : Кадр + + + + Add Frames : Level %1 : Frame + Добавить кадры: Уровень %1: Кадр + + + + Renumber : Level %1 + Пересчитать : Уровень %1 + + + + Insert : Level %1 + Вставить: Уровень %1 + + + + Reverse : Level %1 + Обратить: Уровень %1 + + + + Swing : Level %1 + Свинг : Уровень %1 + + + + Step %1 : Level %2 + Шаг %1 : Уровень %2 + + + + Each %1 : Level %2 + Каждый %1 : Уровень %2 + + + + Duplicate : Level %1 + Дублировать : Уровень %1 + + + + Move Level to Scene : Level %1 + Переместить уровень в сцену : Уровень %1 + + + + Inbetween : Level %1, + Промежуточные кадры : Уровень %1 + + + + It is not possible to paste the columns: there is a circular reference. + Вставить колонки невозможно: имеется круговой референс. + + + + Paste Column : + Всавить колонку : + + + + Delete Column : + Удалить колонку : + + + + Insert Column : + Вставить колонку : + + + + Resequence : Col%1 + Пересчитать секвенцию : Кол%1 + + + + Clone Sub-xsheet : Col%1 + Клонировать Sub-xsheet : Кол%1 + + + + Clear Cells : Col%1 + Очистить ячейки: Кол%1 + + + + Reverse + Обратить + + + + Swing + Добавить в обратном порядке + + + + Autoexpose + Автоэкспонирование + + + + Invalid selection: each selected column must contain one single level with increasing frame numbering. + Недопустимый выбор: каждая выбранная колонка должна содержать один единственный уровень с увеличением нумерации кадров. + + + + Random + Случайно + + + + Step %1 + Шаг %1 + + + + Each %1 + Каждые %1 + + + + Reframe to %1's + Рекадрировать на %1 + + + + Roll Up + Первый вниз + + + + Roll Down + Последний наверх + + + + Clone Level : %1 > %2 + Клонировать уровень : %1 > %2 + + + + Clone Levels : + Клонировать уровни : + + + + + Ok + Ок + + + + + FlipBook + Flipbook + + + + It is not possible to track the level: +allocation error. + Невозможно отслеживать уровень: +Ошибка распределения. + + + + It is not possible to track the level: +no region defined. + Невозможно отслеживать уровень: +Ни один регион не определен. + + + + It is not possible to track specified regions: +more than 30 regions defined. + Невозможно отслеживать указанные регионы: +Определено более 30 регионов. + + + + It is not possible to track specified regions: +defined regions are not valid. + Невозможно отслеживать указанные регионы: +Определенные регионы недействительны. + + + + It is not possible to track specified regions: +some regions are too wide. + Невозможно отслеживать указанные регионы: +Некоторые регионы слишком широкие. + + + + It is not possible to track specified regions: +some regions are too high. + Невозможно отслеживать указанные регионы: +Некоторые регионы слишком высоки. + + + + Frame Start Error + Ошибка начального кадра + + + + Frame End Error + Ошибка конечного кадра + + + + Threshold Distance Error + Ошибка порогового расстояния + + + + Sensitivity Error + Ошибка чувствительности + + + + No Frame Found + Не найдены кадры + + + + It is not possible to track specified regions: +the selected level is not valid. + Невозможно отслеживать указанные регионы: +Выбранный уровень недействителен. + + + + It is not possible to track the level: +no level selected. + Невозможно отслеживать уровень: +Не выбран ни один уровень. + + + + It is not possible to track specified regions: +the level has to be saved first. + Невозможно отслеживать указанные регионы: +Сначала необходимо сохранить уровень. + + + + It is not possible to track the level: +undefined error. + Невозможно отслеживать уровень: +Неопределенная ошибка. + + + + Time Stretch + Растяжение времени + + + + <custom> + <пользовательский> + + + + The file name already exists. +Do you want to overwrite it? + Имя файла уже существует. +Вы хотите переписать его? + + + + Deleting "%1". +Are you sure? + Удаление «%1». +Вы уверены? + + + + + Script Console + Консоль скриптов + + + + Hide Zero Thickness Lines + Скрыть линии нулевой толщины + + + + Show Zero Thickness Lines + Показать линии нулевой толщины + + + + The selected paper format is not available for %1. + Выбранный формат бумаги недоступен для %1. + + + + No TWAIN scanner is available + Нет TWAIN-сканера + + + + No scanner is available + Нет сканера + + + + + Scan + Сканирование + + + + Some of the selected drawings were already scanned. Do you want to scan them again? + Некоторые из выбранных рисунков уже были отсканированы. Вы хотите отсканировать их снова? + + + + Don't Scan + Не сканировать + + + + There are no frames to scan. + Для сканирования нет кадров. + + + + + TWAIN is not available. + TWAIN недоступен. + + + + Run script + Запустить скрипт + + + + Create project + Создать проект + + + + + Image DPI + Изображение DPI + + + + + Custom DPI + Пользовательский DPI + + + + Palette Gizmo %1 + Палитра Gizmo %1 + + + + Warning + Предупреждение + + + + Palette is locked. + Палитра заблокирована. + + + + Create Level %1 at Column %2 + Создать уровень %1 в колонке %2 + + + + A filename cannot be empty or contain any of the following characters: + \ / : * ? " < > | + Имя файла не может быть пустым или содержать любой из следующих символов: + \ /: *? "<> | + + + + File %1 already exists. +Do you want to overwrite it? + Файл «%1» уже существует. +Хотите перезаписать его? + + + + Do you want to expose the renamed level ? + Вы хотите экспонировать переименованный уровень? + + + + Expose + Экспонировать + + + + Don't expose + Не экспонировать + + + + The palette %1 already exists. +Do you want to overwrite it? + Палитра %1 уже существует. +Вы хотите переписать её? + + + + Cannot load Color Model in current palette. + Невозможно загрузить цветовую модель в текущей палитре. + + + + + The color model palette is different from the destination palette. +What do you want to do? + Палитра цветовой модели отличается от палитры назначения. +Что вы хотите сделать? + + + + + Overwrite the destination palette. + Перезаписать назначенную палитру. + + + + + Keep the destination palette and apply it to the color model. + Сохраните палитру назначения и примените ее к цветовой модели. + + + + + Add color model's palette to the destination palette. + Добавить цветовую палитру модели в палитру назначения. + + + + Choose Folder + Выберите папку + + + + + + File Browser + Браузер файлов + + + + + Duplicate + Дублировать + + + + Paste Key Frames + Вставить ключевые кадры + + + + Delete Key Frames + Удалить ключевые кадры + + + + Copy File + Копировать файл + + + + Paste File : + Вставить файл : + + + + Duplicate File : + Дублировать файл : + + + + Task added to the Batch Render List. + Задача добавлена в список пакетного рендеринга. + + + + Task added to the Batch Cleanup List. + Задача добавлена в список пакетной очистки. + + + + Deleting %1. Are you sure? + Удаление %1. Вы уверены? + + + + Deleting %n files. Are you sure? + + Удаление %n файлов. Вы уверены? + непонятно почему программа находит ошибку в оригинальном тексте ?? + + + + + + A convertion task is in progress! wait until it stops or cancel it + по идее здесь обязан быть вопросительный знак + Выполняется задача конвертации! Подождать, пока она закончится, или отменить? + + + + You are going to premultiply selected files. +The operation cannot be undone: are you sure? + Вы собираетесь сделать premultiply выбранных файлов. +Операция не может быть отменена: вы уверены? + + + + Premultiply + Premultiply + + + + There are no assets to collect + Нет активов для сбора + + + + One asset imported + Один импортированный актив + + + + %1 assets imported + Импортировано %1 активов + + + + + Error loading scene %1 :%2 + Ошибка загрузки сцены %1 :%2 + + + + + Error loading scene %1 + Ошибка загрузки сцены %1 + + + + There was an error saving the %1 scene. + Ошибка с сохранением сцены %1. + + + + No scene imported + Нет импортированной сцены + + + + One scene imported + Одна сцена импортирована + + + + %1 scenes imported + %1 импортированных сцен + + + + It is not possible to delete the selection. + Удалить выделение невозможно. + + + + Paste Cells + Вставить ячейки + + + + Delete Cells + Удалить ячейки + + + + Cut Cells + Вырезать ячейки + + + + Insert Cells + Поместить ячейки + + + + It is not possible to paste vectors in the current cell. + Невозможно вставить векторы в текущую ячейку. + + + + Paste (Strokes) + Вставить (штрихи) + + + + It is not possible to paste image on the current cell. + Невозможно вставить изображение в текущую ячейку. + + + + + Paste + Вставить + + + + Paste (Raster) + Вставить (Растр) + + + + Overwrite Paste Cells + Заменить вставленные ячейки + + + + + Rename Cell at Column %1 Frame %2 + Переименовать ячейку в колонке %1 Кадр %2 + + + + + No data to paste. + Нет данных для вставки. + + + + + It is not possible to paste the cells: there is a circular reference. + Невозможно вставить ячейки: имеется круговой референс. + + + + + It is not possible to paste data: there is nothing to paste. + Невозможно вставить данные: нечего вставлять. + + + + Cannot paste data + Nothing to paste + Не удается вставить данные + Нечего вставлять + + + + It is not possible to save images in camera stand view. + Невозможно сохранить изображения в режиме просмотра камеры. + + + + The preview images are not ready yet. + Изображения предварительного просмотра еще не готовы. + + + + Xsheet + Xsheet + + + + Modify Play Range : %1 - %2 + Изменить диапазон воспроизведения : %1 - %2 + + + + Modify Play Range : %1 - %2 > %3 - %4 + Изменить диапазон воспроизведения : %1 - %2 > %3 - %4 + + + + Use Level Extender + Использовать удлинитель уровня + + + + Modify Sound Level + Изменить уровень звука + + + + Move keyframe handle : %1 Handle of the keyframe %2 + Переместить ушко ключевого кадра : %1 Ушко ключевого кадра %2 + + + + Move Columns + Переместить колонки + + + + Change Pegbar + Изменить Pegbar + + + + Toggle cycle of %1 + Переключить цикл %1 + + + + Move Level + Переместить уровень + + + + + Schematic + Схемы + + + + Palette + Палитра + + + + + Studio Palette + Палитра Studio + + + + + Style Editor + Редактор стилей + + + + + Viewer + Просмотрщик + + + + Tool Options + Настройки инструмента + + + + + Tasks + Задания + + + + + Batch Servers + Пакетные серверы + + + + + Scene Cast + Состав сцены + + + + + Export + Экспортировать + + + + + Function Editor + Редактор функций + + + + + Message Center + Центр сообщений + + + + LineTest Viewer + LineTest просмотрщик + + + + LineTest Capture + LineTest захват + + + + + Combo Viewer + ComboViewer + + + + History + История + + + + Level + Уровень + + + + already exists! Are you sure you want to overwrite it? + уже существует! Вы действительно хотите перезаписать? + + + + + + Match lines can be applied to Toonz raster levels only. + Match lines могут применяться только к растровым уровням Toonz. + + + + It is not possible to merge tlv columns containing more than one level + Невозможно объединить колонки tlv, содержащие более одного уровня + + + + + The level you are using has not a valid palette. + Уровень, который вы используете, не имеет допустимой палитры. + + + + + It is not possible to delete lines because no column, cell or level strip frame was selected. + Невозможно удалить строки, потому что не выбрана ни одна колонка, ячейка или кадр Level Strip. + + + + The selected column is empty. + Выбранный столбец пуст. + + + + Selected cells must be in the same column. + Выбранные ячейки должны находиться в однй колонке. + + + + Match lines can be deleted from Toonz raster levels only + Match lines могут быть удалены только из растровых уровней Toonz + + + + Level: + Уровень: + + + + Skipping frame. + Пропуск кадра. + + + + Don't Duplicate + Не дублировать + + + + The specified name is already assigned to the %1 file. + Указанное имя уже присвоено файлу %1. + + + + Warning: level %1 already exists; overwrite? + Предупреждение: уровень %1 уже существует; перезаписать? + + + + It is not possible to rename the %1 file. + Невозможно переименовать файл %1. + + + + It is not possible to copy the %1 file. + Невозможно скопировать файл %1. + + + + Color Model + Цветная модель + + + + It is not possible to export the scene %1 because it does not belong to any project. + Экспортировать сцену %1 невозможно, потому что она не принадлежит ни одному проекту. + + + + Continue to All + Продолжить все + + + + Move Level to Cast Folder + Переместить уровень в папку Cast + + + + + Rendered Frames :: From %1 To %2 :: Step %3 + Рендер кадров :: От %1 до %2 :: Шаг %3 + + + + Preview FX :: %1 + Предпросмотр Fx :: %1 + + + + The merge command is not available for greytones images. + Команда слияния недоступна для серотоновых изображений. + + + + Merge Raster Levels + Объединить уровни растра + + + + + It is not possible to perform a merging involving more than one level per column. + Невозможно выполнить слияние, включающее более одного уровня в колонке. + + + + Only raster levels can be merged to a raster level. + Только уровни растра могут быть объединены с растровым уровнем. + + + + Only vector levels can be merged to a vector level. + Только векторные уровни могут быть объединены с векторным уровнем. + + + + + It is possible to merge only Toonz vector levels or standard raster levels. + разве?? + Можно объединить только уровни векторов Toonz или стандартные уровни растра. + + + + + [Drag] to move position + [Перетаскивание] для перемещения позиции + + + + ----Separator---- + ----Разделитель---- + + + + [Drag] to move position, [Double Click] to edit title + [Перетащить], чтобы переместить позицию, [Двойной щелчок], чтобы изменить название + + + + + Incorrect file + Неверный файл + + + + [Drag&Drop] to copy separator to menu bar + [[Drag&Drop] для копирования разделителя в строку меню + + + + [Drag&Drop] to copy command to menu bar + [Drag&Drop] для копирования команды в строку меню + + + + Delete Matchline : Level %1 + Удалить Matchline : Уровень %1 + + + + Apply Matchline : Column%1 < Column%2 + что за за наклон?? + Применить Matchline: Колонка %1 < Колонка %2 + + + + It is not possible to apply match lines to a column containing more than one level. + Невозможно применить Match lines к колонке, содержащему более одного уровня. + + + + It is not possible to use a match lines column containing more than one level. + Невозможно использовать колонку Match lines, содержащий более одного уровня. + + + + The style index you specified is not available in the palette of the destination level. + Указанный индекс стиля не доступен в палитре уровня назначения. + + + + The style index range you specified is not valid: please separate values with a comma (e.g. 1,2,5) or with a dash (e.g. 4-7 will refer to indexes 4, 5, 6 and 7). + Указанный диапазон индекса стиля недействителен: разделите значения запятой (например, 1,2,5) или тире (например, 4-7 будут ссылаться на индексы 4, 5, 6 и 7). + + + + The frame range you specified is not valid: please separate values with a comma (e.g. 1,2,5) or with a dash (e.g. 4-7 will refer to frames 4, 5, 6 and 7). + Недопустимый диапазон кадров: пожалуйста, разделите значения запятой (например, 1,2,5) или тире (например, 4-7 будут относиться к кадрам 4, 5, 6 и 7). + + + + No drawing is available in the frame range you specified. + В указанном диапазоне кадров нет рисунка. + + + + Cannot open menubar settings template file. Re-installing Toonz will solve this problem. + Не удается открыть файл шаблонов настроек меню. Повторная установка Toonz решит эту проблему. + + + + No more Undo operations available. + Больше нет операций Undo. + + + + No more Redo operations available. + Больше нет операций Redo. + + + + The rooms will be reset the next time you run Toonz. + Rooms будут сброшены следующий раз, когда вы запустите Toonz. + + + + Visit Web Site + Посетите вебсайт + + + + An update is available for this software. +Visit the Web site for more information. + Для этого программного обеспечения доступно обновление. +Посетите веб-сайт для получения дополнительной информации. + + + + https://opentoonz.github.io/e/ + https://opentoonz.github.io/e/ + + + + Installing %1 again could fix the problem. + Установка %1 снова может устранить проблему. + + + + Selected folders don't belong to the current project. +Do you want to import them or load from their original location? + Выбранные папки не относятся к текущему проекту. +Вы хотите импортировать их или загрузить из своего исходного местоположения? + + + + RenameAsToonzPopup + + + The file name cannot be empty or contain any of the following characters:(new line) \ / : * ? " | + Имя файла не может быть пустым или содержать любой из следующих символов: (новая строка) \ /: *? "| + + + + + Rename + Переименовать + + + + Renaming File + Переименование файла + + + + Creating an animation level of %1 frames + Создание уровня анимации в %1 кадра + + + + Delete Original Files + Удалить исходные файлы + + + + Level Name: + Имя уровня: + + + + Cancel + Отмена + + + + RenderController + + + The %1 scene has a different resolution from the %2 scene. + The output result may differ from what you expect. What do you want to do? + Сцена %1 имеет другое разрешение от сцены %2. + Результат может отличаться от ожидаемого. Что вы хотите сделать? + + + + Continue + Продолжить + + + + Cancel + Отмена + + + + Exporting ... + Экспорт ... + + + + Abort + Сбросить + + + + Exporting + Экспорт + + + + The %1 scene contains an audio file with different characteristics from the one used in the first exported scene. +The audio file will not be included in the rendered clip. + Сцена %1 содержит звуковой файл с другими характеристиками, чем тот который используется в первой экспортируемой сцене. +Аудиофайл не будет включен в созданный клип. + + + + RenderListener + + + Finalizing render, please wait. + Завершается рендеринг, подождите. + + + + RenumberPopup + + + + Renumber + Пересчитать + + + + Start: + Старт: + + + + Step: + Шаг: + + + + Cancel + Отмена + + + + ReplaceLevelPopup + + + Replace Level + Заменить уровень + + + + Replace + Заменить + + + + Nothing to replace: no cells selected. + Нечего заменить: ячейки не выбраны. + + + + File not found + + Файл не найден + + + + ReplaceParentDirectoryPopup + + + Replace Parent Directory + Заменить родительский каталог + + + + Replace + Заменить + + + + Nothing to replace: no cells or columns selected. + Нечего заменить: не выбраны ни ячейки, ни колонки. + + + + RoomTabWidget + + + New Room + Новый Room + + + + Delete Room "%1" + Удалить Room "%1" + + + + Customize Menu Bar of Room "%1" + Настройка панели меню Room «%1» + + + + Room + Room + + + + Are you sure you want to remove room %1 + Вы действительно хотите удалить Room %1 + + + + Ruler + + + + Click to create an horizontal guide + Нажмите, чтобы создать горизонтальную напрвляющую + + + + + Click to create a vertical guide + Нажмите, чтобы создать вертикальную напрвляющую + + + + Click and drag to move guide + Нажмите и перетащите, чтобы переместить направляющую + + + + SVNCleanupDialog + + + Version Control: Cleanup + Контроль версий: Очистка + + + + Cleaning up %1... + Очистка %1... + + + + Close + Закрыть + + + + Cleanup done. + Очищено. + + + + SVNCommitDialog + + + Version Control: Put changes + Контроль версий: Внесение изменений + + + + Select / Deselect All + Выбрать / Отменить выбор + + + + 0 Selected / 0 Total + 0 Выбрано / 0 Всего + + + + + Getting repository status... + Получение статуса репозитория... + + + + Comment: + Комментарий: + + + + Put Scene Contents + Поместить содержание сцены + + + + Put + Поместить + + + + Cancel + Отмена + + + + Adding %1 items... + Добавление %1 элементов... + + + + Set needs-lock property... + Задайте свойство необходимой блокировки... + + + + Close + Закрыть + + + + Committing %1 items... + Фиксировать %1 элементов... + + + + Put done successfully. + Помещено успешно. + + + + Putting %1 items... + Ввод %1 предметов... + + + + + No items to put. + Нечего помещать. + + + + + %1 items to put. + %1 элементрв для помещения. + + + + + %1 Selected / %2 Total + %1 Выбрано / %2 Всего + + + + SVNCommitFrameRangeDialog + + + Version Control: Put + Управление версиями: Поместить + + + + Note: the file will be updated too. + Примечание: файл также будет обновлен. + + + + Comment: + Комментарий: + + + + Put + Поместить + + + + Cancel + Отмена + + + + Put done successfully. + Помещено успешно. + + + + Locking file... + Заблокировать файл ... + + + + Getting frame range edit information... + Получение информации о диапазоне кадров... + + + + + No frame range edited. + Нет отредактированного диапазона кадров. + + + + Updating frame range edit information... + Обновление информации о редактировании диапазона кадров ... + + + + + Putting changes... + Внесение изменений... + + + + Adding hook file to repository... + Добавление файла hook в репозиторий ... + + + + Setting the needs-lock property to hook file... + ?? + Настройка свойства блокировки потребностей для захвата файла... + + + + Updating file... + Обновление файла... + + + + SVNDeleteDialog + + + Version Control: Delete + Контроль версий: Удалить + + + + Delete folder that contains %1 items. + Удалить папку, содержащую %1 элементов. + + + + Delete empty folder. + Удалить пустую папку. + + + + + Delete %1 items. + Удаление %1 элементов. + + + + Comment: + Комментарий: + + + + Delete Scene Contents + Удалить содержание сцены + + + + Keep Local Copy + Хранить локальную копию + + + + Delete Local Copy + Удалить локальную копию + + + + Delete on Server + Удалить на сервере + + + + Cancel + Отмена + + + + + Deleting %1 items... + Удаление %1 элементов... + + + + Delete + Удалить + + + + You are deleting items also on repository. Are you sure ? + Вы удаляете элементы также в репозитории. Вы уверены? + + + + SVNFrameRangeLockInfoDialog + + + Version Control: Edit Info + Управление версиями: Редактировать инфо + + + + Getting repository status... + Получение статуса репозитория... + + + + Close + Закрыть + + + + + No frame range edited. + Нет отредактированного диапазона кадров. + + + + %1 on %2 is editing frames from %3 to %4. + %1 на %2 - редактирование кадров с %3 до %4. + + + + SVNLockDialog + + + Version Control: Edit + Управление версиями: Редактировать + + + + Version Control: Unlock + Управление версиями: Разблокировка + + + + Getting repository status... + Получение статуса репозитория... + + + + Comment: + Комментарий: + + + + Edit Scene Contents + Изменить содержание сцены + + + + Unlock Scene Contents + Разблокировать содержание сцены + + + + Edit + Редактировать + + + + Unlock + Разблокировать + + + + Cancel + Отмена + + + + No items to edit. + Нет элементов для редактирования. + + + + No items to unlock. + Нет элементов для разблокировки. + + + + + %1 items to edit. + %1 элементов для редактирования. + + + + + %1 items to unlock. + %1 предметов для разблокировки. + + + + Editing %1 items... + Редактирование %1 элементов... + + + + Unlocking %1 items... + Разблокировка %1 предметов... + + + + SVNLockFrameRangeDialog + + + Version Control: Edit Frame Range + Управление версиями: Редактирование диапазона кадров + + + + Temporary Lock file... + Временно блокировать файл... + + + + From: + От: + + + + To: + До: + + + + Comment: + Комментарий: + + + + Edit + Редактировать + + + + Cancel + Отмена + + + + + No frame range edited. + Нет отредактированного диапазона кадров. + + + + %1 on %2 is editing frames from %3 to %4. + %1 на %2 - редактирование кадров с %3 до %4. + + + + Getting frame range edit information... + Получение информации о диапазоне кадров... + + + + SVNLockInfoDialog + + + Version Control: Edit Info + Управление версиями: Редактировать инфо + + + + <b>Edited By:</b> + <b> Отредактировано:</b> + + + + <b>Host:</b> + <b>Host:</b> + + + + <b>Comment:</b> + <b>Комментарий:</b> + + + + <b>Date:</b> + <b>Дата:</b> + + + + Close + Закрыть + + + + SVNLockMultiFrameRangeDialog + + + Version Control: Edit Frame Range + Управление версиями: Редактирование диапазона кадров + + + + Getting repository status... + Получение статуса репозитория... + + + + From: + От: + + + + To: + До: + + + + Comment: + Комментарий: + + + + Edit + Редактировать + + + + Cancel + Отмена + + + + No frame range edited. + Нет отредактированного диапазона кадров. + + + + %1 is editing frames from %2 to %3 + %1- редактирование кадров с %2 до %3 + + + + Editing %1 items... + Редактирование %1 элементов... + + + + SVNMultiFrameRangeLockInfoDialog + + + Version Control: Edit Info + Управление версиями: Редактировать инфо + + + + Getting repository status... + Получение статуса репозитория... + + + + Close + Закрыть + + + + No frame range edited. + Нет отредактированного диапазона кадров. + + + + %1 is editing frames from %2 to %3 + %1- редактирование кадров с %2 до %3 + + + + SVNPurgeDialog + + + Version Control: Purge + Контроль версий: Очистка + + + + Note: the file will be updated too. + Примечание: файл также будет обновлен. + + + + Getting repository status... + Получение статуса репозитория... + + + + Purge + Чистка + + + + Cancel + Отмена + + + + No items to purge. + Нет элементов для очистки. + + + + %1 items to purge. + %1 элементов для очистки. + + + + Purging files... + Очистка файлов... + + + + SVNRevertDialog + + + Version Control: Revert changes + Контроль версий: отменить изменения + + + + Getting repository status... + Получение статуса репозитория... + + + + Revert Scene Contents + Восстановить содержание сцены + + + + Revert + Возвратить + + + + Cancel + Отмена + + + + No items to revert. + Нет элементов для возврата. + + + + + %1 items to revert. + %1 предметов для возврата. + + + + Reverting %1 items... + Возврат %1 пунктов... + + + + Revert done successfully. + Возврат прошел успешно. + + + + SVNRevertFrameRangeDialog + + + Version Control: Revert Frame Range changes + Управление версиями: возврат изменений диапазона кадров + + + + 1 item to revert. + 1 элемент для возврата. + + + + Revert + Возвратить + + + + Cancel + Отмена + + + + Reverting 1 item... + Возврат 1 пункта ... + + + + It is not possible to revert the file. + Невозможно возвратить файл. + + + + + + Revert done successfully. + Возврат прошел успешно. + + + + Reverting %1 items... + Возврат %1 пунктов... + + + + SVNTimeline + + + Version Control: Timeline + Контроль версий: Таймлайн + + + + Getting file history... + Получение истории файлов... + + + + Get Scene Contents + Получить содержание сцены + + + + Get Last Revision + Получить последнюю ревизию + + + + Get Selected Revision + Получить выбранный вариант + + + + Close + Закрыть + + + + + Date + Дата + + + + + + Author + Автор + + + + + + Comment + Комментарий + + + + Revision + Ревизия + + + + Getting the status for %1... + Получение статуса для %1... + + + + Getting repository status... + Получение статуса репозитория... + + + + Getting %1 to revision %2... + Получение %1 до ревизии%2... + + + + Getting %1 items to revision %2... + Получение %1 элементов для ревизии %2... + + + + Getting %1... + Получение %1... + + + + Getting %1 items... + Получение %1 предметов... + + + + SVNUnlockFrameRangeDialog + + + Version Control: Unlock Frame Range + Управление версиями: разблокировка диапазона кадров + + + + Note: the file will be updated too. Are you sure ? + Примечание: файл также будет обновлен. Вы уверены? + + + + Unlock + Разблокировать + + + + Cancel + Отмена + + + + Unlock done successfully. + Разблокировка выполнена успешно. + + + + Locking file... + Заблокировать файл ... + + + + Getting frame range edit information... + Получение информации о диапазоне кадров... + + + + + No frame range edited. + Нет отредактированного диапазона кадров. + + + + Updating frame range edit information... + Обновление информации о редактировании диапазона кадров ... + + + + Putting changes... + Внесение изменений... + + + + Updating file... + Обновление файла... + + + + Close + Закрыть + + + + SVNUnlockMultiFrameRangeDialog + + + Version Control: Unlock Frame Range + Управление версиями: разблокировка диапазона кадров + + + + Getting repository status... + Получение статуса репозитория... + + + + Unlock + Разблокировать + + + + Cancel + Отмена + + + + Unlocking %1 items... + Разблокировка %1 предметов... + + + + No items to unlock. + Нет элементов для разблокировки. + + + + %1 items to unlock. + %1 предметов для разблокировки. + + + + SVNUpdateAndLockDialog + + + Version Control: Edit + Управление версиями: Редактировать + + + + Comment: + Комментарий: + + + + Edit Scene Contents + Изменить содержание сцены + + + + Get And Edit + Получить и редактировать + + + + Edit + Редактировать + + + + Cancel + Отмена + + + + No items to edit. + Нет элементов для редактирования. + + + + + %1 items to edit. + %1 элементов для редактирования. + + + + Updating %1 items... + Обновление %1 элементов ... + + + + Editing %1 items... + Редактирование %1 элементов... + + + + SVNUpdateDialog + + + Version Control: Update + Контроль версий: обновление + + + + Getting repository status... + Получение статуса репозитория... + + + + Get Scene Contents + Получить содержание сцены + + + + Update + Обновить + + + + Close + Закрыть + + + + Cancel + Отмена + + + + + + + %1 items to update. + %1 элементов для обновления. + + + + Some items are currently modified in your working copy. +Please commit or revert changes first. + Некоторые элементы в настоящее время изменены в вашей рабочей копии. +Сначала необходимо перенести или отменить изменения. + + + + Update to: + Обновить до: + + + + Some conflict found. Select.. + Найдены некоторые конфликты. Выбрать.. + + + + No items to update. + Нет элементов для обновления. + + + + Updating items... + Обновление элементов... + + + + Updating to their items... + Обновление их предметов... + + + + SaveCurvePopup + + + Save Curve + Сохранить кривую + + + + Save + Сохранить + + + + SaveImagesPopup + + + Save Flipbook Images + Сохранить изображения Flipbook + + + + Save + Сохранить + + + + SaveLevelAsPopup + + + Save Level + Сохранить уровень + + + + Save + Сохранить + + + + SavePaletteAsPopup + + + Save Palette + Сохранить палитру + + + + Save + Сохранить + + + + SavePresetPopup + + + Save Preset + Сохранить пресет + + + + Preset Name: + Имя пресета: + + + + Save + Сохранить + + + + Cancel + Отмена + + + + It is not possible to create the preset folder %1. + Невозможно создать папку пресетов %1. + + + + Do you want to overwrite? + Вы хотите перезаписать? + + + + Yes + Да + + + + No + Нет + + + + SavePreviewedPopup + + + Save Previewed Images + Сохранить просмотренные изображения + + + + Save + Сохранить + + + + SaveSceneAsPopup + + + Save Scene + Сохранить сцену + + + + Save + Сохранить + + + + SaveSettingsPopup + + + Save Cleanup Settings + Сохранить настройки очистки + + + + Save + Сохранить + + + + SaveSubSceneAsPopup + + + Sub-xsheet + Sub-xsheet + + + + Save + Сохранить + + + + SaveTaskListPopup + + + Save Task List + Сохранить список задач + + + + Save + Сохранить + + + + ScanSettingsPopup + + + Scan Settings + Настройки сканера + + + + [no scanner] + [Нет сканера] + + + + Paper Format: + Формат бумаги: + + + + Reverse Order + Обратный порядок + + + + Paper Feeder + Податчик бумаги + + + + Dpi: + DPI: + + + + Mode: + Режим: + + + + Threshold: + Предел: + + + + Brightness: + Яркость: + + + + SceneSettingsPopup + + + Scene Settings + Настройки сцены + + + + Frame Rate: + Частота кадров: + + + + Camera BG Color: + Камера Цвет фона: + + + + Field Guide Size: + Размер гида поля: + + + + A/R: + A/R: + + + + Image Subsampling: + Субсемплинг изображения: + + + + TLV Subsampling: + СубсемплингTLV: + + + + Marker Interval: + Интервал маркеров: + + + + Start Frame: + Начальный кадр: + + + + SceneViewerContextMenu + + + Reset Subcamera + Суб-камера. Сброс по умолчанию + + + + Swap Compared Images + Поменять сравниваемые изображения + + + + Save Previewed Frames + Сохранить кадры предпросмотра + + + + Regenerate Preview + Регенерировать предпросмотр + + + + Regenerate Frame Preview + Регенерировать предпросмотр кадра + + + + Show + Показать + + + + Hide + Скрыть + + + + Select + Выбрать + + + + Show / Hide + Показать / скрыть + + + + Select Camera + Выбрать камеру + + + + Select Pegbar + Выбрать Pegbar + + + + Select Column + Выбрать колонку + + + + SceneViewerPanel + + + Safe Area (Right Click to Select) + Безопасная зона (Щелкните правой кнопкой мыши, чтобы выбрать) + + + + Field Guide + Гид поля + + + + Camera Stand View + Стандартный вид с камеры + + + + 3D View + 3D-просмотр + + + + Camera View + Вид с камеры + + + + Freeze + Заморозить + + + + Preview + Предпросмотр + + + + Sub-camera Preview + Предпросмотр суб-камеры + + + + Untitled + Безымянный + + + + Scene: + Сцена: + + + + :: Frame: + :: Кадр: + + + + + :: Zoom : + :: Зум : + + + + :: Level: + :: Уровень: + + + + Level: + Уровень: + + + + ShortcutPopup + + + Configure Shortcuts + Настроить хоткеи + + + + Remove + Удалить + + + + + Export Current Shortcuts + Экспорт текущих хоткеев + + + + Delete Current Preset + Удалить текущий пресет + + + + Save Current Shortcuts as New Preset + Сохранить текущие хоткеи в новом пресете + + + + Load + Загрузить + + + + Use selected preset as shortcuts + Использовать выбранные пресеты как хоткеи + + + + Shortcut Presets + Пресеты хоткеев + + + + Clear All Shortcuts + Удалить все хоткеи + + + + Couldn't find any matching command. + Не удалось найти подходящую команду. + + + + This will erase ALL shortcuts. Continue? + Это приведет к удалению всех ярлыков. Продолжить? + + + + This will overwrite all current shortcuts. Continue? + Это перезапишет все текущие ярлыки. Продолжить? + + + + A file named + Файл с именем + + + + already exists. Do you want to replace it? + уже существует. Хотите заменить его? + + + + OpenToonz - Setting Shortcuts + OpenToonz - Настройка хоткеев + + + + Included presets cannot be deleted. + Включенные пресеты не могут быть удалены. + + + + Are you sure you want to delete the preset: + Вы действительно хотите удалить пресет: + + + + ? + ? + + + + Load from file... + Загрузить из файла... + + + + ShortcutTree + + + + Menu Commands + Команды меню + + + + Fill + Заполнить + + + + + File + Файл + + + + + Edit + Редактировать + + + + + Scan & Cleanup + Сканирование и очистка + + + + + Level + Уровень + + + + + Xsheet + Xsheet + + + + + Cells + Ячейки + + + + + View + Вид + + + + + Windows + Окна + + + + Right-click Menu Commands + Меню команд правого клика + + + + + Tools + Инструменты + + + + Tool Modifiers + Модификаторы инструментов + + + + Visualization + Визуализация + + + + Misc + Разное + + + + Playback Controls + Управление воспроизведением + + + + RGBA Channels + Каналы RGBA + + + + Playback + Воспроизведение + + + + ShortcutViewer + + + %1 is already assigned to '%2' +Assign to '%3'? + % 1 уже присвоен '% 2' +Присвоить значение '% 3'? + + + + Yes + Да + + + + No + Нет + + + + StackedMenuBar + + + + Failed to load menu %1 + Не удалось загрузить меню %1 + + + + Failed to add command %1 + Не удалось добавить команду %1 + + + + + + + + Files + Файлы + + + + + Scan + Сканирование + + + + Settings + Настройки + + + + Processing + Обработка + + + + + + + + Edit + Редактировать + + + + + + + + + Windows + Окна + + + + + + + Other Windows + Другие окна + + + + + + + + + Customize + Настроить + + + + + + + + View + Вид + + + + + + + + + + Help + Помощь + + + + + Tools + Инструменты + + + + + More Tools + Другие инструменты + + + + + Checks + Проверки + + + + + Render + Рендер + + + + Draw + Рисовать + + + + + Xsheet + Xsheet + + + + Subxsheet + Subxsheet + + + + Levels + Уровни + + + + + Cells + Ячейки + + + + Reframe + Рреструктурировать + + + + Step + Шаг + + + + Each + Каждый + + + + File + Файл + + + + Scan && Cleanup + Сканирование && Очистка + + + + Level + Уровень + + + + Cannot open menubar settings file %1 + Не удается открыть файл настроек меню %1 + + + + Failed to create menubar + Не удалось создать меню + + + + StartupPopup + + + OpenToonz Startup + OpenToonz Startup + + + + Choose Project + Выбрать проект + + + + Create a New Scene + Создать новую сцену + + + + Open Scene + Открыть сцену + + + + Scene Name: + Имя сцены: + + + + Width: + Ширина: + + + + Height: + Высота: + + + + DPI: + DPI: + + + + X + X + + + + Resolution: + Разрешение: + + + + Frame Rate: + Частота кадров: + + + + Add + Добавить + + + + Remove + Удалить + + + + Show this at startup + Показывать это при запуске + + + + Create Scene + Создать сцену + + + + New Project... + Новый проект... + + + + Open Another Scene... + Открыть другую сцену... + + + + + pixel + пиксель + + + + + cm + cm + + + + + mm + mm + + + + + inch + дюйм + + + + + field + поле + + + + Save In: + Сохранить в: + + + + Camera Size: + Размер камеры: + + + + Units: + Единицы: + + + + No Recent Scenes + Нет недавних сцен + + + + The name cannot be empty. + Имя не может быть пустым. + + + + The chosen file path is not valid. + Выбранный путь к файлу недействителен. + + + + The width must be greater than zero. + Ширина должна быть больше нуля. + + + + The height must be greater than zero. + Высота должна быть больше нуля. + + + + The frame rate must be 1 or more. + Частота кадров должна быть 1 или более. + + + + Preset name + Имя предустановки + + + + Enter the name for %1 + Введите имя для %1 + + + + Error : Preset Name is Invalid + Ошибка: недопустимое имя пресета + + + + The preset name must not use ','(comma). + Имя пресета не должно содержать ',' (запятая). + + + + Bad camera preset + Плохой пресет камеры + + + + '%1' doesn't seem to be a well formed camera preset. +Possibly the preset file has been corrupted + «%1», похоже, не является предустановленной камерой. +Возможно, файл предварительной настройки поврежден + + + + TApp + + + Error allocating memory: not enough memory. + Ошибка выделения памяти: недостаточно памяти. + + + + TaskSheet + + + Name: + Имя: + + + + Status: + Статус: + + + + Command Line: + Командная строка: + + + + Server: + Сервер: + + + + Submitted By: + Представленный: + + + + Submitted On: + Представлены на: + + + + Submission Date: + Дата представления: + + + + Start Date: + Дата начала: + + + + Completion Date: + Дата завершения: + + + + Duration: + Продолжительность: + + + + Step Count: + Количество шагов: + + + + Failed Steps: + Неудачные шаги: + + + + Successful Steps: + Успешные шаги: + + + + Priority: + Приоритет: + + + + Output: + Вывод: + + + + Frames per Chunk: + ??? + Frames per Chunk: + + + + Multimedia: + Мультимедиа: + + + + From: + От: + + + + To: + До: + + + + Step: + Шаг: + + + + Shrink: + Сокращение: + + + + + None + Ничего + + + + Fx Schematic Flows + Схемы Fx + + + + Fx Schematic Terminal Nodes + Fx Схематические терминальные узлы + + + + Dedicated CPUs: + Выделенные процессоры: + + + + Single + Один + + + + Half + Половина + + + + + All + Все + + + + Render Tile: + Render Tile: + + + + Large + Большой + + + + Medium + Средний + + + + Small + Маленький + + + + Visible Only + Только видимые + + + + Overwrite + Перезаписать + + + + NoPaint + Без краски + + + + Off + Отключен + + + + Dependencies: + Зависимости: + + + + Remove >> + Удалить >> + + + + << Add + << Добавить + + + + TaskTreeModel + + + Are you sure you want to remove ALL tasks? + Вы действительно хотите удалить ВСЕ задачи? + + + + Remove All + Удалить все + + + + Cancel + Отмена + + + + TaskTreeView + + + Start + Start + + + + Stop + Stop + + + + Remove + Удалить + + + + TasksViewer + + + &Start + &Start + + + + Start + Старт + + + + &Stop + &Стоп + + + + Stop + Стоп + + + + &Add Render Task + &Добавить задачу рендеринга + + + + Add Render + Добавить рендер + + + + &Add Cleanup Task + &Добавить задачу очистки + + + + Add Cleanup + Добавить очистку + + + + &Save Task List + &Сохранить список задач + + + + Save + Сохранить + + + + &Save Task List As + &Сохранить список задач как + + + + Save As + Сохранить как + + + + &Load Task List + &Загрузить список задач + + + + Load + Загрузить + + + + &Remove + &Удалить + + + + Remove + Удалить + + + + TestPanel + + + Left: + Слева: + + + + Right: + Справа: + + + + TimeStretchPopup + + + Time Stretch + Растяжение времени + + + + Selected Cells + Выбранные ячейки + + + + Selected Frame Range + Выбранный диапазон кадров + + + + Whole Xsheet + Весь Xsheet + + + + Stretch: + Растяжение: + + + + New Range: + Новый диапазон: + + + + Old Range: + Старый диапазон: + + + + Stretch + Растяжение + + + + Cancel + Отмена + + + + TimelineWidget + + + Recent Version + Предыдущая версия + + + + Older Version + Старая версия + + + + TopBar + + + Lock Rooms Tab + Заблокировать Room Tab + + + + TrackerPopup + + + Tracking Settings + Настройки трекинга + + + + Threshold: + Предел: + + + + Sensitivity: + Чувствительность: + + + + Variable Region Size + Размер изменяемого региона + + + + Include Background + Включить фон + + + + Track + Трек + + + + Processing... + Обработка... + + + + Cancel + Отмена + + + + VectorizerPopup + + + Convert-to-Vector Settings + Настройки конвертации в вектор + + + + Centerline + Ось + + + + Outline + Контур + + + + + + Mode + Режим + + + + + Threshold + Предел + + + + + + + Accuracy + Точность + + + + + + + Despeckling + Удаление соринок + + + + + Max Thickness + Максимальная толщина + + + + + Thickness Calibration + Калибровка толщины + + + + Start: + Начало: + + + + End: + Конец: + + + + + Preserve Painted Areas + Сохранять окрашенные области + + + + Add Border + Добавить кайму + + + + Full color non-AA images + Полноцветные изображения без АА + + + + Enhanced ink recognition + Улучшенное распознавание контура + + + + Corners + Углы + + + + + Adherence + Прилипание + + + + + Angle + Угол + + + + + Curve Radius + Радиус кривой + + + + Raster Levels + Уровни растра + + + + + Max Colors + Макс. цвета + + + + + Transparent Color + Прозрачный цвет + + + + TLV Levels + Уровни TLV + + + + + Tone Threshold + Порог тона + + + + Toggle Swatch Preview + Переключить просмотр образцов + + + + Toggle Centerlines Check + Переключить проверку оси + + + + Save Settings + Сохранить изменения + + + + Load Settings + Загрузить изменения + + + + Reset Settings + Сбросить настройки + + + + Convert + Конвертировать + + + + The current selection is invalid. + Текущий выбор недействителен. + + + + Cannot convert to vector the current selection. + Невозможно конвертировать в вектор текущий выбор. + + + + Conversion in progress: + Выполняется конверсия: + + + + + File could not be opened for read + Файл не может быть открыт для чтения + + + + File could not be opened for write + Файл не может быть открыт для записи + + + + Save Vectorizer Parameters + Сохранить параметры векторизации + + + + Load Vectorizer Parameters + Загрузить параметры векторизации + + + + VersionControl + + + The version control configuration file is empty or wrongly defined. +Please refer to the user guide for details. + Файл конфигурации управления версиями пуст или неправильно определен. +Подробнее см. В руководстве пользователя. + + + + The version control client application specified on the configuration file cannot be found. +Please refer to the user guide for details. + Клиентское приложение управления версиями, указанное в файле конфигурации, не может быть найдено. +Подробнее см. В руководстве пользователя. + + + + + The version control client application is not installed on your computer. +Subversion 1.5 or later is required. +Please refer to the user guide for details. + Клиентское приложение контроля версий не установлено на вашем компьютере. +Требуется субверсия 1.5 или новее. +Подробнее см. В руководстве пользователя. + + + + The version control client application installed on your computer needs to be updated, otherwise some features may not be available. +Subversion 1.5 or later is required. +Please refer to the user guide for details. + Клиентское приложение контроля версий, установленное на вашем компьютере, должно быть обновлено, в противном случае некоторые функции могут быть недоступны. +Требуется Subversion 1.5 или новее. +Подробнее см. В руководстве пользователя. + + + + ViewerHistogramPopup + + + Viewer Histogram + Просмотр гистограммы + + + + XsheetGUI::CellArea + + + Click to select keyframe, drag to move it + Кликнуть для выделения кадра, потянуть для перемещения + + + + Click and drag to set the acceleration range + Нажмите и перетащите, чтобы установить диапазон ускорения + + + + Click and drag to set the deceleration range + Нажмите и перетащите, чтобы установить диапазон замедления + + + + Set the cycle of previous keyframes + Установите цикл предыдущих ключевых кадров + + + + Click and drag to move the selection + Кликнуть и потянуть для перемещения выделенного + + + + Click and drag to play + Кликнуть и потянуть для воспроизведения + + + + Click and drag to repeat selected cells + Нажмите и перетащите, чтобы повторить выбранные ячейки + + + + Reframe + Рреструктурировать + + + + Step + Шаг + + + + Each + Каждый + + + + Replace + Заменить + + + + Open Memo + Открыть Мемо + + + + Delete Memo + Удалить Мемо + + + + XsheetGUI::ColumnArea + + + &Subsampling 1 + &Субсемплинг 1 + + + + &Subsampling 2 + &Субсемплинг 2 + + + + &Subsampling 3 + &Субсемплинг 3 + + + + &Subsampling 4 + &Субсемплинг 4 + + + + Click to select camera + Нажмите, чтобы выбрать камеру + + + + Click to select column, drag to move it + Нажмите, чтобы выбрать столбец, перетащите, чтобы переместить его + + + + Lock Toggle + Блокировка переключения + + + + Preview Visibility Toggle + Переключение видимости + + + + Camera Stand Visibility Toggle + Переключатель видимости камеры + + + + Click to play the soundtrack back + Нажмите, чтобы воспроизвести зв. дорожку + + + + Set the volume of the soundtrack + Установите громкость зв. дорожки + + + + Alt + Click to Toggle Thumbnail + Alt + Click для переключения иконок + + + + Reframe + Рреструктурировать + + + + Subsampling + Субсемплинг + + + + XsheetGUI::ColumnTransparencyPopup + + + None + Нет + + + + Red + Красный + + + + Green + Зеленый + + + + Blue + Глоубой + + + + DarkYellow + Темно-желтый + + + + DarkCyan + DarkCyan + + + + DarkMagenta + DarkMagenta + + + + + N.B. Filter doesn't affect vector levels + N.B - здесь видимо (nota bene)? + Фильтр не влияет на уровни вектора + + + + Filter: + Фильтр: + + + + XsheetGUI::NoteArea + + + Frame + Кадр + + + + Sec Frame + Сек Кадр + + + + 6sec Sheet + 6сек Лист + + + + 3sec Sheet + 3сек Лист + + + + XsheetGUI::NotePopup + + + Memo + Memo + + + + Post + Применить + + + + Discard + Сбросить + + + + XsheetGUI::RowArea + + + Playback Start Marker + Маркер начала воспроизведения + + + + Playback End Marker + Маркер окончания воспроизведения + + + + Pinned Center : Col%1%2 + Фиксированный центр : Кол%1%2 + + + + Double Click to Toggle Onion Skin + Двойной клик для переключения Onion Skin + + + + Curren Frame + Текущий кадр + + + + Fixed Onion Skin Toggle + Переключение фиксированного Onion Skin + + + + Relative Onion Skin Toggle + Переключение относительного Onion Skin + + + + Set Start Marker + Установить стартовый маркер + + + + Set Stop Marker + Установить конечный маркер + + + + Set Auto Markers + Установить авто-маркеры + + + + Remove Markers + Удалить маркеры + + + + Preview This + Просмотреть это + + + + XsheetViewer + + + Untitled + Безымянный + + + + Scene: + Сцена: + + + + Frames + Кадры + + + + (Sub) + (Sub) + + + + Level: + Уровень: + + + + Selected: + Выбранный: + + + + frame : + кадр : + + + + frames * + кадры * + + + + column + колонка + + + + columns + колонки + + + diff --git a/toonz/sources/translations/russian/toonzlib.ts b/toonz/sources/translations/russian/toonzlib.ts new file mode 100644 index 0000000..d97d19a --- /dev/null +++ b/toonz/sources/translations/russian/toonzlib.ts @@ -0,0 +1,778 @@ + + + + + Preferences + + + Retas Level Format + Формат уровней Retas + + + + QObject + + + No restrictions for uncompressed avi video + Нет ограничений для несжатого видео avi + + + + It is not possible to communicate with the codec. + Probably the codec cannot work correctly. + Невозможно установить связь с кодеком. + Вероятно, кодек работает неправильно. + + + + video width must be a multiple of %1 + ширина видео должна быть кратна %1 + + + + video length must be a multiple of %1 + Длина видео должна быть кратна %1 + + + + No restrictions for this codec + Нет ограничений для этого кодека + + + + Resolution restrictions: + Ограничения разрешения: + + + + New Camera %1 + Новая камера %1 + + + + New Pegbar %1 + Новый Pegbar %1 + + + + Set Active Camera %1 > %2 + Выбрать активную камеру %1 > %2 + + + + Remove Spline %1 + Удалить сплайн %1 + + + + New Motion Path %1 + Новый путь движения %1 + + + + Link Motion Path %1 > %2 + Путь движения линии %1 > %2 + + + + Remove Object %1 + Удалить объект %1 + + + + Remove Column + Удалить колонку + + + + Load into Current Palette > %1 + Загрузка в текущую палитру > %1 + + + + Replace with Current Palette > %1 + Заменить текущую палитру > %1 + + + + Delete Studio Palette : %1 + Удалить палитру Studio : %1 + + + + Create Studio Palette : %1 + Создать палитру Studio : %1 + + + + Delete Studio Palette Folder : %1 + Удалить папку палитры Studio : %1 + + + + Create Studio Palette Folder : %1 + Создать папку палитры Studio : %1 + + + + Move Studio Palette Folder : %1 : %2 > %3 + Изменить папку палитры Studio : %1 : %2 > %3 + + + + Arrange Styles in Palette %1 + Упорядочить стили в палитре %1 + + + + Create Style#%1 in Palette %2 + Создать стиль#%1 в палитре %2 + + + + Add Style to Palette %1 + Добавить стиль в палитру %1 + + + + Add Page %1 to Palette %2 + Добавить страницу %1 в палитру %2 + + + + Delete Page %1 from Palette %2 + Удалить страницу %1 из палитры %2 + + + + Load Color Model %1 to Palette %2 + Загрузить цветовую %1 модель в палитру %2 + + + + color model + Цветовая модель + + + + Move Page + Переместить страницу + + + + Rename Page %1 > %2 + Переименовать страницу %1 > %2 + + + + Rename Style#%1 in Palette%2 : %3 > %4 + Переименование стиля#%1 в палитре%2 : %3>%4 + + + + Set Picked Position of Style#%1 in Palette%2 : %3,%4 + Установить выбранную позицию стиля#%1 в палитре%2 :%3,%4 + + + + Update Colors by Using Picked Positions in Palette %1 + Обновление цветов с использованием выбранных позиций в палитре %1 + + + + Add Fx : + Добавить Fx: + + + + Insert Fx : + Вставить Fx : + + + + + Create Linked Fx : %1 + Создать связанный Fx : %1 + + + + Replace Fx : + Заменить Fx : + + + + Unlink Fx : %1 - - %2 + Разъединить Fx : %1 - - %2 + + + + Make Macro Fx : %1 + Сделать Makro Fx : %1 + + + + Explode Macro Fx : %1 + Разбить Macro Fx : %1 + + + + Create Output Fx + Создать выход Fx + + + + Connect to Xsheet : + Подключить к Xsheet : + + + + Disconnect from Xsheet : + Отключить от Xsheet : + + + + Delete Link + Удалить связь + + + + Delete Fx Node : %1 + Удалить Fx-узел : %1 + + + + Paste Fx : + Вставить Fx : + + + + Disconnect Fx + Отключить Fx + + + + Connect Fx : %1 - %2 + Подключить Fx : %1 - %2 + + + + Rename Fx : %1 > %2 + Переименовать Fx : %1 - %2 + + + + Group Fx + Сгруппировать Fx + + + + Ungroup Fx + Разгруппировать Fx + + + + Rename Group : %1 > %2 + Переименовать группу : %1 > %2 + + + + Set Keyframe + Установить ключевой кадр + + + + Remove Keyframe + Удалить ключевой кадр + + + + Cycle + Цикл + + + + The autocentering failed on the current drawing. + Ошибка автоцентра на текущем рисунке. + + + + + Move + Перемещение + + + + Edit Rotation + Изменить поворот + + + + Move E/W + Перемещение E/W + + + + Move N/S + Перемещение N/S + + + + Move Z + Перемещение Z + + + + Edit Stack Order + Изменить порядок стека + + + + Edit Scale W + Изменить масштаб W + + + + Edit Scale H + Изменить масштаб H + + + + Edit Scale + Изменить масштаб + + + + Edit PosPath + Редактировать PosPath + + + + Edit Shear X + Изменить сдвиг X + + + + Edit Shear Y + Изменить сдвиг Y + + + + %1 %2 Frame : %3 + %1 %2 Кадр : %3 + + + + First argument must be a scene : %1 + Первым аргументом должна быть сцена :%1 + + + + Can't render empty scene + Невозможно отобразить пустую сцену + + + + + Vectorization failed + Векторизация не выполнена + + + + Argument '%1' does not look like a FrameId + Аргумент %1 не похож на FrameId + + + + Bad argument (%1): should be an Image (not empty) + Плохой аргумент (%1): должно быть изображение (не пустой) + + + + Argument doesn't look like a file path : %1 + Аргумент не похож на путь к файлу :%1 + + + + %1-%2 + %1-%2 + + + + %1 + %1 + + + + Expected %1 argument(s) in %2, got %3 + Ожидаемый %1 аргумент(ы) в %2,%3 + + + + %1 is not a valid color (valid color names are 'red', 'transparent', '#FF8800', ecc.) + %1 не является допустимым цветом (допустимые названия цветов: "красный","прозрачный,"#FF8800" и др.) + + + + Can't save + Не удается сохранить + + + + Set Keyframe %1 at frame %2 + Установить ключевой кадр %1 в кадре %2 + + + + Remove Keyframe %1 at frame %2 + Удалить ключевой кадр %1 в кадре %2 + + + + Move Center %1 Frame %2 + Переместить центр %1 кадр %2 + + + + TScriptBinding::CenterlineVectorizer + + + Can't vectorize a %1 level + Нельзя векторизовать уровень %1 + + + + Can't vectorize a level with no frames + Нельзя векторизовать уровень без кадров + + + + Can't vectorize a %1 image + Нельзя векторизовать изображение %1 + + + + Bad argument (%1): should be an Image or a Level + Недопустимый аргумент (%1): должно быть изображение или уровень + + + + TScriptBinding::FilePath + + + "%1" + "%1" + + + + can't concatenate an absolute path : %1 + Не может конкатенировать абсолютный путь: %1 + + + + %1 is not a directory + %1 не является каталогом + + + + can't read directory %1 + Не удается прочитать каталог%1 + + + + TScriptBinding::Image + + + File %1 doesn't exist + Файл %1 не существует + + + + Loaded first frame of %1 + Загружен первый кадр %1 + + + + Unexpected error while reading image + Ошибка при чтении изображения + + + + Unrecognized file type : + Неизвестный тип файла : + + + + Can't save a %1 image to this file type : %2 + Не удалось сохранить изображение %1 в этот тип файла: %2 + + + + Unexpected error while writing image + Ошибка при записи изображения + + + + TScriptBinding::ImageBuilder + + + Bad argument (%1): should be 'Raster' or ToonzRaster' + Недопустимый аргумент (%1): должен быть «Растр» или "ToonzRaster" + + + + ImageBuilder(%1 image) + ImageBuilder(%1 изображение) + + + + + %1 : %2 + %1 : %2 + + + + Bad argument (%1): should be a Transformation + Плохой аргумент (%1): должно быть преобразование + + + + TScriptBinding::Level + + + %1 frames + %1 кадров + + + + Bad argument (%1). It should be FilePath or string + Плохой аргумент (%1). Это должен быть FilePath или строка + + + + Exception loading level (%1) + Уровень загрузки исключений (%1) + + + + File %1 doesn't exist + Файл %1 не существует + + + + File %1 is unsupported + Файл %1 не поддерживается + + + + Exception reading %1 + Чтение исключений %1 + + + + Can't save an empty level + Не удалось сохранить пустой уровень + + + + Unrecognized file type : + Нераспознанный тип файла : + + + + Can't save a %1 level to this file type : %2 + Не удается сохранить уровень %1 для этого типа файла : %2 + + + + Exception writing %1 + Запись исключений %1 + + + + frame index (%1) must be a number + Индекс кадра (%1) должен быть числом + + + + frame index (%1) is out of range (0-%2) + Индекс кадра (%1) вне диапазона (0-%2) + + + + second argument (%1) is not an image + Второй аргумент (%1) не является изображением + + + + can not insert a %1 image into a level + Невозможно вставить изображение %1 в уровень + + + + can not insert a %1 image to a %2 level + Невозможно вставить изображение %1 в уровень %2 + + + + TScriptBinding::OutlineVectorizer + + + Can't vectorize a %1 level + Невозможно векторизовать уровень %1 + + + + Can't vectorize a level with no frames + Невозможно векторизовать уровень без кадров + + + + Can't vectorize a %1 image + Невозможно векторизовать изображение %1 + + + + Bad argument (%1): should be an Image or a Level + Плохой аргумент (%1): должно быть изображение или уровень + + + + Invalid color : + Недопустимый цвет: + + + + TScriptBinding::Rasterizer + + + Expected a vector image: %1 + Ожидаемое векторное изображение: %1 + + + + Expected a vector level: %1 + Ожидаемый векторный уровень: %1 + + + + Argument must be a vector level or image : + Аргумент должен быть векторным уровнем или изображением: + + + + %1 has no palette + %1 не имеет палитры + + + + TScriptBinding::Scene + + + File %1 doesn't exist + Файл %1 не существует + + + + Exception reading %1 + Чтение исключений %1 + + + + Exception writing %1 + Запись исключений %1 + + + + Bad level type (%1): must be Vector,Raster or ToonzRaster + Плохой тип уровня (%1): должен быть Vector, Raster или ToonzRaster + + + + + Can't add the level: name(%1) is already used + Невозможно добавить уровень: имя(%1) уже используется + + + + Can't load this kind of file as a level : %1 + Невозможно загрузить этот файл как уровень : %1 + + + + Could not load level %1 + Не удалось загрузить уровень %1 + + + + Level is not included in the scene : %1 + Уровень не включен в сцену : %1 + + + + %1 : Expected a Level instance or a level name + %1 : Ожидаемый экземпляр уровня или имя уровня + + + + Level '%1' is not included in the scene + Уровень %1 не включен в сцену + + + + TScriptBinding::ToonzRasterConverter + + + Can't convert a %1 level + Невозможно преобразовать уровень %1 + + + + Can't convert a level with no frames + Невозможно преобразовать уровень без кадров + + + + Can't convert a %1 image + Невозможно преобразовать изображение %1 + + + + Bad argument (%1): should be a raster Level or a raster Image + Плохой аргумент (%1): должен быть растровый уровень или растровое изображение + + + + TScriptBinding::Transform + + + Identity + Идентичность + + + + + Translation(%1,%2) + Перемещение(%1,%2) + + + + Rotation(%1) + Вращение(%1) + + + + Scale(%1%) + Масштаб(%1%) + + + + Scale(%1%, %2%) + Масштаб(%1%, %2%) + + + + Transform(%1, %2, %3; %4, %5, %6) + Трансформация(%1, %2, %3; %4, %5, %6) + + + diff --git a/toonz/sources/translations/russian/toonzqt.ts b/toonz/sources/translations/russian/toonzqt.ts new file mode 100644 index 0000000..3665f73 --- /dev/null +++ b/toonz/sources/translations/russian/toonzqt.ts @@ -0,0 +1,2565 @@ + + + + + AddFxContextMenu + + + Insert FX + Вставить FX + + + + Add FX + Добавить FX + + + + Replace FX + Заменить FX + + + + Insert + Вставить + + + + Add + Добавить + + + + Replace + Заменить + + + + AddWordButton + + + Character + Character + + + + Part + Часть + + + + Suffix + Суффикс + + + + New + Новый + + + + Add New Word for %1 + Добавить новое слово для %1 + + + + AdjustPaletteDialog + + + Adjust Current Level to This Palette + Отрегулируйте текущий уровень до этой палитры + + + + Tolerance + Толерантность + + + + Apply + Применить + + + + Cancel + Отмена + + + + CameraPainter + + + &Reset Center + &Сброс центра + + + + &Activate + &Активировать + + + + CameraSettingsWidget + + + DPI + DPI + + + + Pixels + Пиксели + + + + x + x + + + + Use Current Level Settings + Использовать настройки текущего уровня + + + + Add + Добавить + + + + Remove + Удалить + + + + Force Squared Pixel + Force Squared Pixel + + + + Bad camera preset + Плохой пресет камеры + + + + '%1' doesn't seem a well formed camera preset. +Possibly the preset file has been corrupted + "%1" не кажется правильно сформированным пресетом камеры. +Возможно пресет поврежден + + + + Preset name + Имя пресета + + + + Enter the name for %1 + Введите имя для %1 + + + + Error : Preset Name is Invalid + Ошибка: имя пресета недействительно + + + + The preset name must not use ','(comma). + Имя пресета не должно содержать "," (запятую). + + + + ChannelHisto + + + Red + Красный (R) + + + + Green + Зеленый (G) + + + + Blue + Голубой (B) + + + + Alpha + Альфа + + + + RGBA + RGBA + + + + ColumnPainter + + + &Reset Center + &Сброс центра + + + + &Open Subxsheet + &Открыть Subxsheet + + + + DVGui + + + OK + OK + + + + Cancel + Отмена + + + + DVGui::CleanupColorField + + + Brightness: + Яркость: + + + + Contrast: + Контраст: + + + + Color Thres + Цветовой порог + + + + White Thres + Порог белого + + + + H Range + H Range + + + + Line Width + Ширина линии + + + + DVGui::DvTextEdit + + + Bold + Bold + + + + Italic + Italic + + + + Underline + Подчеркивание + + + + Align Left + Выровнять по левому краю + + + + Align Center + Выровнять по центру + + + + Align Right + Выровнять по правому краю + + + + DVGui::FileField + + + ... + ... + + + + DVGui::LineEdit + + + A file name cannot contains any of the following chracters: /\:*?"<>|. + Имя файла не может содержать ни одного из следующих символов: / \: *? "<> |. + + + + DVGui::ProgressDialog + + + OpenToonz + OpenToonz + + + + DVGui::RadioButtonDialog + + + Toonz + Toonz + + + + DVGui::ToneCurveField + + + Channel: + Канал: + + + + DVGui::ValidatedChoiceDialog + + + Apply + Применить + + + + Apply to All + Применить ко всему + + + + Cancel + Отмена + + + + EaseInOutSegmentPage + + + Ease In: + Ease In: + + + + Ease Out: + Ease Out: + + + + EasyInputArea + + + Warning + Внимание + + + + %1 is already registered + %1 уже зарегистрирован + + + + FileSegmentPage + + + File Path: + Путь к файлу: + + + + Column: + Колонка: + + + + Unit: + Ед. изм: + + + + FlipConsole + + + + + + FPS + FPS + + + + Save + Сохранить + + + + Snapshot + Snapshot + + + + Define Sub-camera + Определить подкамеру + + + + Define Loading Box + Определить Loading Box + + + + Use Loading Box + Использовать Loading Box + + + + Background Colors + Фоновые цвета + + + + Framerate + Частота кадров + + + + Playback Controls + Управление воспроизведением + + + + Color Channels + Цветовые каналы + + + + Set Key + Установить ключ + + + + Histogram + Гистограмма + + + + Display Areas as Filled + Отобразить область заполненной + + + + &Save Images + &Сохранить изображения + + + + &Snapshot + &Snapshot + + + + &Compare to Snapshot + &Сравнить с Snapshot + + + + &Define Sub-camera + &Определить подкамеру + + + + &Define Loading Box + &Определить Loading Box + + + + &Use Loading Box + &Использовать Loading Box + + + + &White Background + &Белый фон + + + + &Black Background + &Черный фон + + + + &Checkered Background + &Клетчатый фон + + + + &First Frame + &Первый кадр + + + + &Previous Frame + &Предыдущий кадр + + + + Pause + Pause + + + + Play + Play + + + + Loop + Loop + + + + &Next frame + &Следующий кадр + + + + &Last Frame + &Последний кадр + + + + + Red Channel + Красный канал + + + + Red Channel in Grayscale + Красный канал в оттенках серого + + + + + Green Channel + Зеленый канал + + + + Green Channel in Grayscale + Зеленый канал в оттенках серого + + + + + Blue Channel + Синий канал + + + + Blue Channel in Grayscale + Синий канал в оттенках серого + + + + Alpha Channel + Альфа-канал + + + + &Soundtrack + &Звуковая дорожка + + + + &Histogram + &Гистограмма + + + + &Locator + &Локатор + + + + &Display Areas as Filled + &Отобразить область заполненной + + + + FPS + FPS + + + + Set the current frame + Установите текущий кадр + + + + Drag to play the animation + Перетащите, чтобы воспроизвести анимацию + + + + Set the playback frame rate + Установите частоту кадров воспроизведения + + + + FrameNavigator + + + Previous Frame + Предыдущий кадр + + + + Next Frame + Следующий кадр + + + + FunctionExpressionSegmentPage + + + Unit: + Ед. изм: + + + + Expression: + Выражение: + + + + + There is a circular reference in the definition of the interpolation. + В определении интерполяции имеется круговой референс. + + + + FunctionPanel + + + Function Curves + Кривые функции + + + + Link Handles + Связать Handles + + + + Unlink Handles + Разъединить Handles + + + + Reset Handles + Сбросить Handles + + + + Delete + Удалить + + + + Set Key + Установить ключ + + + + Activate Cycle + Активировать цикл + + + + Deactivate Cycle + Деактивировать цикл + + + + Linear Interpolation + Линейная интерполяция + + + + Speed In / Speed Out Interpolation + Интерполяция Speed In / Speed Out + + + + Ease In / Ease Out Interpolation + Ease In / Ease Out Интерполяция + + + + Ease In / Ease Out (%) Interpolation + Ease In / Ease Out (%) Интерполяция + + + + Exponential Interpolation + Экспоненциальная интерполяция + + + + Expression Interpolation + Интерполяция выражений + + + + File Interpolation + Интерполяция файлов + + + + Constant Interpolation + Равномерная интерполяция + + + + Similar Shape Interpolation + Интерполяция аналогичной формы + + + + Fit Selection + Подогнать выделенное + + + + Fit + Подогнать + + + + Step 1 + Шаг 1 + + + + Step 2 + Шаг 2 + + + + Step 3 + Шаг 3 + + + + Step 4 + Шаг 4 + + + + Smooth + Плавно + + + + Frame Based + Frame Based + + + + Curve Shape + Форма кривой + + + + FunctionSegmentViewer + + + + Linear + Линейная + + + + Speed In / Speed Out + Speed In / Speed Out + + + + Ease In / Ease Out + Ease In / Ease Out + + + + Ease In / Ease Out % + Ease In / Ease Out % + + + + Exponential + Экспоненциальная + + + + Expression + Выражение + + + + + File + Файл + + + + Constant + Постоянная + + + + Similar Shape + Аналогичная форма + + + + Interpolation: + Интерполяция: + + + + Apply + Применить + + + + + < + < + + + + + > + > + + + + Speed + Speed + + + + Ease + Ease + + + + Ease% + Ease% + + + + Expo + Expo + + + + Expr + Expr + + + + Const + Const + + + + Similar + Аналогичная + + + + ???? + ???? + + + + FunctionSelection + + + There is a circular reference in the definition of the interpolation. + В определении интерполяции имеется круговой референс. + + + + FunctionSheetCellViewer + + + Delete Key + Удалить ключ + + + + Set Key + Установить ключ + + + + Linear Interpolation + Линейная интерполяция + + + + Speed In / Speed Out Interpolation + Speed In / Speed Out Интерполяция + + + + Ease In / Ease Out Interpolation + Ease In / Ease Out Интерполяция + + + + Ease In / Ease Out (%) Interpolation + Ease In / Ease Out (%) Интерполяция + + + + Exponential Interpolation + Экспоненциальная интерполяция + + + + Expression Interpolation + Интерполяция выражений + + + + File Interpolation + Интерполяция файлов + + + + Constant Interpolation + Равномерная интерполяция + + + + Step 1 + Шаг 1 + + + + Step 2 + Шаг 2 + + + + Step 3 + Шаг 3 + + + + Step 4 + Шаг 4 + + + + FunctionToolbar + + + Value + Значение + + + + &Function Editor Toggle + &Переключатель редактора функций + + + + FunctionTreeView + + + Save Curve + Сохранить кривую + + + + Load Curve + Загрузить кривую + + + + Export Data + Экспорт данных + + + + + Show Animated Only + Показать только анимированные + + + + + Show All + Показать все + + + + FxColumnPainter + + + &Disconnect from Xsheet + &Отсоединить от Xsheet + + + + &Connect to Xsheet + &Присоединить к Xsheet + + + + &Paste Add + &Вставить Добавить + + + + &Preview + &Предпросмотр + + + + &Uncache Fx + &Очистить кэш Fx + + + + &Cache FX + &Кэшировать FX + + + + &Open Subxsheet + &Открыть Subxsheet + + + + FxOutputPainter + + + &Delete + &Удалить + + + + &Activate + &Активировать + + + + FxPainter + + + &Open Group + &Открыть группу + + + + &Paste Replace + &Вставить Заменить + + + + &Paste Add + &Вставить Добавить + + + + &Delete + &Удалить + + + + &Disconnect from Xsheet + &Отсоединить от Xsheet + + + + &Connect to Xsheet + &Присоединить к Xsheet + + + + &Create Linked FX + &Создать связанный FX + + + + &Unlink + &Разъединить + + + + &Make Macro FX + &Сделать Macro FX + + + + &Explode Macro FX + &Разбить Makro FX + + + + &Open Macro FX + &Открыть Makro FX + + + + &Save As Preset... + &Сохранить как пресет... + + + + &Preview + &Предпросмотр + + + + &Uncache FX + &Очистить кэш Fx + + + + &Cache FX + &Кэшировать FX + + + + FxPalettePainter + + + &Disconnect from Xsheet + &Отсоединить от Xsheet + + + + &Connect to Xsheet + &Присоединить к Xsheet + + + + &Preview + &Предпросмотр + + + + FxSchematicLink + + + &Delete + &Удалить + + + + &Paste Insert + &Вставить вставку + + + + FxSchematicPort + + + &Disconnect from Xsheet + &Отсоединить от Xsheet + + + + &Connect to Xsheet + &Присоединить к Xsheet + + + + FxSchematicScene + + + Cannot Paste Insert a selection of unconnected FX nodes. +Select FX nodes and related links before copying or cutting the selection you want to paste. + Невозможно вставить выбранные неподключенные узлы FX. +Выберите FX-узлы и связи перед копированием или сокращением выбора, который вы хотите вставить. + + + + Cannot Paste Add a selection of unconnected FX nodes. +Select FX nodes and related links before copying or cutting the selection you want to paste. + Невозможно вставить (добавить) выбранные неподключенные узлы FX. +Выберите FX-узлы и связи перед копированием или сокращением выбора, который вы хотите вставить. + + + + Cannot Paste Replace a selection of unconnected FX nodes. +Select FX nodes and related links before copying or cutting the selection you want to paste. + Невозможно вставить (заменить) выбранные неподключенные узлы FX. +Выберите FX-узлы и связи перед копированием или сокращением выбора, который вы хотите вставить. + + + + FxSettings + + + &Camera Preview + &Предпросмотр камеры + + + + &Preview + &Предпросмотр + + + + &White Background + &Белый фон + + + + &Black Background + &Черный фон + + + + &Checkered Background + &Клетчатый фон + + + + : + : + + + + FxXSheetPainter + + + &Paste Add + &Вставить Добавить + + + + &Preview + &Предпросмотр + + + + GroupPainter + + + &Open Group + &Открыть группу + + + + Histogram + + + Logarithmic Scale + Логарифмическая шкала + + + + InfoViewer + + + File Info + Информация о файле + + + + KeyframeNavigator + + + Previous Key + Предыдущий ключ + + + + + + Set Key + Установить ключ + + + + Next Key + Следующий ключ + + + + NewWordDialog + + + OK + OK + + + + Cancel + Отмена + + + + Enter new word + Введите новое слово + + + + PaletteViewer + + + + + &Save Palette As + &Сохранить палитру как + + + + + + &Save Palette + &Сохранить палитру + + + + + Lock Palette + Блокировать палитру + + + + &Lock Palette + &Блокировать палитру + + + + Options + Опции + + + + &Small Thumbnails View + &Маленькие иконки + + + + &Medium Thumbnails View + &Средние иконки + + + + &Large Thumbnails View + &Большие иконки + + + + &List View + &Посмотреть список + + + + Style Name + Имя стиля + + + + StudioPalette Name + StudioPalette Имя + + + + Both Names + Оба имени + + + + &New Page + &Новая страница + + + + + &New Style + &Новый стиль + + + + + &Move Palette + &Переместить палитру + + + + &Palette Gizmo + &Палитра Gizmo + + + + New Page + Новая страница + + + + Delete Page + Удалить страницу + + + + Overwrite + Перезаписать + + + + Don't Overwrite + Не перезаписывать + + + + Palette + Палитра + + + + Level Palette: + Палитра уровней: + + + + Cleanup Palette + Палитра очистки + + + + Studio Palette + Studio Палитра + + + + (Color Model: + (Цветная модель: + + + + ) + ) + + + + PaletteViewerGUI::PageViewer + + + - No Styles - + - Нет стилей - + + + + Name Editor + Редактор имен + + + + New Style + Новый стиль + + + + New Page + Новая страница + + + + PalettesScanPopup + + + Search for Palettes + Поиск палитр + + + + Ok + Ok + + + + Cancel + Отмена + + + + <files> + <файлы> + + + + ParamViewer + + + Swatch Viewer + можно "просмотрщик образцов" + Swatch Viewer + + + + ParamsPageSet + + + Fx Help + Fx Help + + + + PegbarPainter + + + &Reset Center + &Сброс центра + + + + PointParamField + + + X: + X: + + + + Y: + Y: + + + + QObject + + + <custom> + <пользовательский> + + + + Deleting "%1". +Are you sure? + Удаление «%1». +Вы уверены? + + + + + Delete + Удалить + + + + + + + + + + Cancel + Отмена + + + + It is not possible to delete the style # + Невозможно удалить стиль # + + + + Paste Style in Palette : %1 + Всавить стиль в палитру: %1 + + + + Delete Style from Palette : %1 + Удалить стиль из палитры : %1 + + + + Cut Style from Palette : %1 + Вырезать стиль из палитры : %1 + + + + + It is not possible to delete styles #0 and #1. + Невозможно удалить стили # 0 и # 1. + + + + Can't paste styles there + Здесь невозможно вставлять стили + + + + to Palette : %1 + к палитре : %1 + + + + Paste Color && Name%1 + Вставить цвет && Имя%1 + + + + Paste Name%1 + Вставить имя%1 + + + + Paste Color%1 + Вставить цвет%1 + + + + Paste%1 + Вставить%1 + + + + Can't modify color #0 + Не удается изменить цвет # 0 + + + + There are more cut/copied styles than selected. Paste anyway (adding styles)? + Есть больше вырезанных / скопированных стилей, чем выбрано. Вставить в любом случае (добавление стилей)? + + + + Paste + Вставить + + + + Blend Colors in Palette : %1 + Цвета смешивания в палитре : %1 + + + + Toggle Link in Palette : %1 + Переключить связь в палитре : %1 + + + + Remove Reference in Palette : %1 + Удалить референс в палитре : %1 + + + + Get Color from Studio Palette + Взять цвет из палитры Studio + + + + Paste Object + Встаить объект + + + + Copy Keyframe + Копировать ключевой кадр + + + + Paste Keyframe at Frame : %1 + Вставить ключевой кадр в кадр : %1 + + + + Delete Keyframe + Удалить ключевой кадр + + + + Move Keyframe + Переместить ключевой кадр + + + + Save Motion Path + Сохранить траекторию движения + + + + + Motion Path files (*.mpath) + Файлы траектории движения (* .mpath) + + + + It is not possible to save the motion path. + Невозможно сохранить траекторию движения. + + + + Load Motion Path + Загрузить траекторию движения + + + + It is not possible to load the motion path. + Невозможно загрузить траекторию движения. + + + + Stage Schematic + Stage Schematic + + + + FX Schematic + FX Schematic + + + + Change Style Palette : %1 Style#%2 [R%3 G%4 B%5] -> [R%6 G%7 B%8] + Изменить стиль Палитра : %1 Стиль#%2 [R%3 G%4 B%5] -> [R%6 G%7 B%8] + + + + Save + Сохранить + + + + Discard + Сбросить + + + + + Yes + Да + + + + + No + Нет + + + + Replace + Заменить + + + + Modify Fx Param : %1 + Изменить Fx Параметр : %1 + + + + + + Modify Fx Param : %1 : %2 -> %3 + Изменить Fx Параметры : %1 : %2 -> %3 + + + + + Modify Fx Param : + Изменить Fx Параметр : + + + + ON : %1 + ON : %1 + + + + OFF : %1 + OFF : %1 + + + + Modify Fx Param : %1 : %2 Key + Изменить Fx Параметр : %1 : %2 Ключ + + + + + Add + Добавить + + + + + Remove + Удалить + + + + Modify Fx Param : %1 : %2 Point + Изменить Fx Параметр : %1 : %2 Точка + + + + %1 : Linear ON + %1 : линейный вкл + + + + %1 : Linear OFF + %1 : линейный откл + + + + Palette + Палитра + + + + Overwrite + Перезаписать + + + + Don't Overwrite + Не перезаписывать + + + + It is not possible to assign a shortcut with modifiers to the visualization commands. + Невозможно назначить ярлык с модификаторами для команд визуализации. + + + + Fullpath: + Полный путь: + + + + File Type: + Тип файла: + + + + Frames: + Кадры: + + + + Owner: + Owner: + + + + Size: + Размер: + + + + Created: + Создан: + + + + Modified: + Изменен: + + + + Last Access: + Последний доступ: + + + + Image Size: + Размер изображения: + + + + SaveBox: + SaveBox: + + + + Bits/Sample: + Биты/Образец: + + + + Sample/Pixel: + Образец/Пиксель: + + + + Dpi: + Dpi: + + + + Orientation: + Ориентация: + + + + Compression: + Сжатие: + + + + Quality: + Качество: + + + + Smoothing: + Сглаживание: + + + + Codec: + Кодек: + + + + Alpha Channel: + Альфа-канал: + + + + Byte Ordering: + Байт: + + + + H Pos: + H Pos: + + + + Palette Pages: + Страницы палитры: + + + + Palette Styles: + Стили палитры: + + + + Camera Size: + Размер камеры: + + + + Camera Dpi: + Камера Dpi: + + + + Number of Frames: + Количество кадров: + + + + Number of Levels: + Количество уровней: + + + + Output Path: + Выходной путь: + + + + Endianess: + Порядок байтов: + + + + Length: + Длина: + + + + Channels: + Каналы: + + + + Sample Rate: + Частота дискретизации: + + + + Sample Size: + Размер образца: + + + + The file %1 does not exist. + Файл %1 не существует. + + + + It is not possible to find the %1 level. + Невозможно найти уровень %1. + + + + There was an error copying %1 + Ошибка копирования %1 + + + + It is not possible to find the level %1 + Невозможно найти уровень %1 + + + + + + Cannot premultiply the selected file. + Невозможен premultiply выбранного файла. + + + + Cannot premultiply a vector-based level. + Невозможени premultiply векторного уровня. + + + + Level %1 premultiplied. + Premultiply %1 уровня. + + + + + Frame %1 : conversion failed! + Конверсия кадра %1 не выполнена! + + + + The source image seems not suitable for this kind of conversion + Исходное изображение кажется непригодным для такой конверсии + + + + The file name cannot be empty or contain any of the following characters: (new line) \ / : * ? " | + Имя файла не может быть пустым или содержать любой из следующих символов: (новая строка) \ /: *? "| + + + + OpenToonz 1.1 + OpenToonz 1.1 + + + + Information + Информация + + + + Warning + Внимание + + + + Critical + Критический + + + + Question + Вопрос + + + + Apply + Применить + + + + Styles you are going to delete are used to paint lines and areas in the animation level. + + Стили, которые вы собираетесь удалить, используются для рисования линий и областей на уровне анимации. + + + + + How do you want to proceed? + Как вы хотите поступить? + + + + Delete Styles Only + Удалить только стили + + + + Delete Styles, Lines and Areas + Удалить стили, линии и области + + + + Ok + Ok + + + + Deletion of Lines and Areas from raster-based levels is not undoable. +Are you sure? + Удаление строк и областей из растровых уровней не отменяется. +Вы уверены? + + + + Modify Fx Param : %1 Key : %2 Frame %3 + Изменить Fx Параметр : %1 Ключ : %2 Кадр %3 + + + + Set + Установить + + + + QPushButton + + + OK + OK + + + + SchematicViewer + + + &Fit to Window + &По размеру окна + + + + &Focus on Current + &Фокус на текущем + + + + &Reorder Nodes + &Изменение порядка узлов + + + + &Reset Size + &Сбросить размер + + + + + + &Minimize Nodes + &Минимизировать узлы + + + + + + &Maximize Nodes + &Максимизировать узлы + + + + &New Pegbar + &Новый Pegbar + + + + &New Camera + &Новая камера + + + + &New Motion Path + &Новая траектория движения + + + + &Swtich output port display mode + &Переключение отображения выходного порта + + + + SchematicWindowEditor + + + &Close Editor + &Закрыть редактор + + + + SimilarShapeSegmentPage + + + Reference Curve: + Референсная кривая: + + + + Frame Offset: + Смещение кадра: + + + + There is a syntax error in the definition of the interpolation. + В определении интерполяции имеется синтаксическая ошибка. + + + + There is a circular reference in the definition of the interpolation. + В определении интерполяции имеется круговой референс. + + + + SpecialStyleChooserPage + + + Plain color + Простой цвет + + + + SpeedInOutSegmentPage + + + First Speed: + Первая скорость: + + + + + Handle: + Handle: + + + + + / + / + + + + Last Speed: + Последняя скорость: + + + + + + + + + --- + --- + + + + SplinePainter + + + &Delete + &Удалить + + + + &Save Motion Path... + &Сохранить траекторию движения... + + + + &Load Motion Path... + &Загрузить траекторию движения... + + + + StageSchematicScene + + + &New Pegbar + &Новый Pegbar + + + + &New Motion Path + &Новая траектория движения + + + + &New Camera + &Новая камера + + + + StudioPaletteTreeViewer + + + This folder is not empty. Delete anyway? + Эта папка не пуста. Удалить в любом случае? + + + + New Palette + Новая палитра + + + + New Folder + Новая папка + + + + Delete Folder + Удалить папку + + + + + Load into Current Palette + Загрузка в текущую палитру + + + + Adjust Current Level to This Palette + Отрегулируйте текущий уровень до этой палитры + + + + + Merge to Current Palette + Слияние с текущей палитрой + + + + + Replace with Current Palette + Заменить текущую палитру + + + + Delete Palette + Удалить палитру + + + + Convert to Studio Palette and Overwrite + Конвертировать в Studio Palette и перезаписать + + + + Search for Palettes + Поиск палитр + + + + Delete + Удалить + + + + StyleEditor + + + Auto +Apply + Авто +применение + + + + Apply + Применить + + + + Apply changes to current style + Применить изменения к текущему стилю + + + + Automatically update style changes + Автообновление изменений стиля + + + + Return To Previous Style + Вернуться в предыдущий стиль + + + + Current Style + Текущий стиль + + + + + + Plain + Простой + + + + Texture + Текстура + + + + Special + Особый + + + + Custom + Пользовательский + + + + Vector Brush + Векторная кисть + + + + + Settings + Настройки + + + + StyleEditorGUI::PlainColorPage + + + Wheel + Колесо + + + + HSV + HSV + + + + Matte + Matte + + + + RGB + RGB + + + + StyleEditorGUI::SettingsPage + + + Autopaint for Lines + Автозаполнение линий + + + + StyleNameEditor + + + Name Editor + Редактор имен + + + + OK + OK + + + + Cancel + Отмена + + + + Apply and Next + Применить и продолжить + + + + Style Name + Имя стиля + + + + Easy Inputs + Простые входы + + + + Name Editor: # %1 + Редактор имен: # %1 + + + + TMessageViewer + + + Errors + Ошибки + + + + Warnings + Предупреждения + + + + Infos + Информация + + + + Clear + Очистить + + + + TablePainter + + + &Reset Center + &Сброс центра + + + + VectorBrushStyleChooserPage + + + Plain color + Простой цвет + + + + WordButton + + + Remove %1 + Удалить %1 + + + diff --git a/toonz/sources/translations/spanish/colorfx.ts b/toonz/sources/translations/spanish/colorfx.ts index 04a9f52..d0fbe2e 100644 --- a/toonz/sources/translations/spanish/colorfx.ts +++ b/toonz/sources/translations/spanish/colorfx.ts @@ -1,6 +1,6 @@ - + ArtisticSolidColor @@ -39,7 +39,7 @@ OutlineViewerStyle OutlineViewer(OnlyDebug) - Visor de contornos (SoloDepuración) + Visor de contornos (sólo depuración) Control Point @@ -412,7 +412,7 @@ Distance - + Distancia diff --git a/toonz/sources/translations/spanish/tnztools.ts b/toonz/sources/translations/spanish/tnztools.ts index d6a774e..a2b878c 100644 --- a/toonz/sources/translations/spanish/tnztools.ts +++ b/toonz/sources/translations/spanish/tnztools.ts @@ -13,11 +13,11 @@ E/W: - E/O: + X: N/S: - N/S: + Y: Z: @@ -25,7 +25,7 @@ SO: - OS: + Orden: Rotation @@ -57,7 +57,7 @@ Center - Centrar + Centro Lock @@ -104,11 +104,11 @@ Pencil Mode - Modo de pluma + Modo lápiz Pressure Sensitivity - Sensibilidad a la presión + Sensibilidad a presión Cap @@ -132,7 +132,7 @@ Pencil - Pluma + Lápiz Pressure @@ -192,19 +192,19 @@ Lock Center E/W - Bloquear al centro E/O + Bloquear al centro en X Lock Center N/S - Bloquear al centro N/S + Bloquear al centro en Y Lock Position E/W - Bloquear posición E/O + Bloquear posición X Lock Position N/S - Bloquear posición N/S + Bloquear posición Y Lock Rotation @@ -232,7 +232,7 @@ E/W and N/S Positions - Posiciones E/O y N/S + Posiciones X e Y Z Position @@ -240,7 +240,7 @@ SO - OS + Orden Rotation @@ -299,7 +299,7 @@ Pencil Mode - Modo de la pluma + Modo lápiz @@ -352,7 +352,7 @@ Pressure Sensitivity - Sensibilidad a la presión + Sensibilidad a presión Opacity: @@ -530,7 +530,7 @@ Do you want to continue? Show SO - Mostrar orden de superposición + Mostrar orden Show Skeleton Onion Skin @@ -593,7 +593,7 @@ Do you want to proceed? SO - OS + Orden Angle @@ -640,7 +640,7 @@ Do you want to proceed? Pencil Mode - Modo de la pluma + Modo lápiz Cap @@ -698,7 +698,7 @@ Do you want to proceed? The current column is not visible in Camera Stand. - La columna actual no se encuentra visible en la vista de cámara. + La columna actual no se encuentra visible en la vista detrás de cámara. It is not possible to edit the audio column. @@ -734,7 +734,7 @@ Do you want to proceed? The current tool cannot be used on a Toonz Level. - No es posible usar la herramienta actual en un nivel de Toonz. + No es posible usar la herramienta actual en un nivel de imagen de Toonz. The current tool cannot be used on a Raster Level. @@ -746,7 +746,7 @@ Do you want to proceed? The current tool cannot be used on a mesh-deformed level - No es posible usar la herramienta actual en un nivel deformado por una malla. + No es posible usar la herramienta actual en un nivel de malla deformada. The current frame is locked: any editing is forbidden. @@ -794,7 +794,7 @@ Do you want to proceed? Modify Stroke Tool - Herramienta Modificar trazo + Modificar trazo Modify Spline @@ -810,7 +810,7 @@ Do you want to proceed? Set Save Box : (X%1,Y%2,W%3,H%4)->(X%5,Y%6,W%7,H%8) - Definir marco de seguridad : (X%1,Y%2,An%3,Al%4)->(X%5,Y%6,An%7,Al%8) + Definir marco delimitador : (X%1,Y%2,An%3,Al%4)->(X%5,Y%6,An%7,Al%8) @@ -835,7 +835,7 @@ Do you want to proceed? RasterSelectionTool Modify Savebox - Modificar marco de seguridad + Modificar marco delimitador No Antialiasing @@ -892,11 +892,11 @@ Do you want to proceed? E/W: - E/O: + X: N/S: - N/S: + Y: Thickness @@ -904,14 +904,14 @@ Do you want to proceed? Link - Vínculo + Vincular SkeletonTool Show Only Active Skeleton - Mostrar solo el esqueleto activo + Mostrar sólo el esqueleto activo Global Key @@ -923,22 +923,22 @@ Do you want to proceed? Reset Pinned Center - Restablecer el centro fijado + Restablecer centro fijado StylePickerTool No current level. - + No hay nivel actual. Current level has no available palette. - + El nivel actual no tiene una paleta disponible. Palette must have more than one palette to be organized. - + Es necesario que exista más de una paleta para poder organizarlas. @@ -946,7 +946,8 @@ Do you want to proceed? With this option being activated, the picked style will be moved to the end of the first page of the palette. - + Con esta opción activa, el estilo escogido será +movido hacia el final de la primera página de la paleta. @@ -1022,7 +1023,7 @@ moved to the end of the first page of the palette. Distance - + Distancia Mode: diff --git a/toonz/sources/translations/spanish/toonz.ts b/toonz/sources/translations/spanish/toonz.ts index f75b3b8..a4bdcc1 100644 --- a/toonz/sources/translations/spanish/toonz.ts +++ b/toonz/sources/translations/spanish/toonz.ts @@ -1,6 +1,6 @@ - + AddFilmstripFramesPopup @@ -124,24 +124,25 @@ AudioRecordingPopup Audio Recording - + Grabación de audio Save and Insert - + Guardar e insertar Sync with XSheet - + Sincronizar con planilla - + The microphone is not available: Please select a different device or check the microphone. - + El micrófono no está disponible: +Por favor seleccionar un dispositivo diferente o comprobar el micrófono. @@ -152,7 +153,7 @@ Please select a different device or check the microphone. Pegbar Holes: - Huecos en barra de sujeción: + Huecos de barra de sujeción: Field Guide: @@ -306,7 +307,7 @@ Detenerla o esperar a su finalización antes de eliminarla. Apply - + Aplicar @@ -359,7 +360,7 @@ Detenerla o esperar a su finalización antes de eliminarla. Unit: - Unidad: + Unidades: Relative @@ -504,7 +505,7 @@ Do you want to crop the canvas? Skip - Saltear + Omitir Cleanup All @@ -582,11 +583,11 @@ nuevo al iniciar el proceso de limpieza. Cleanup all selected drawings overwriting those previously cleaned up. - Limpiar todos los dibujos seleccionados sobrescribiendo los anteriormente limpiados. + Limpiar todos los dibujos seleccionados sobrescribiendo los anteriormente limpiados. Cleanup only non-cleaned up drawings and keep those previously cleaned up. - Limpiar solo los dibujos no limpios, manteniendo los anteriormente limpiados. + Limpiar sólo los dibujos no limpios, manteniendo los anteriormente limpiados. Delete existing level and create a new level with selected drawings only. @@ -608,7 +609,7 @@ What do you want to do? Cleanup only non-cleaned up drawings and keep those previously cleaned up.* - Limpiar solo los dibujos no limpios, manteniendo los anteriormente limpiados.* + Limpiar sólo los dibujos no limpios, manteniendo los anteriormente limpiados.* This is Re-Cleanup. Overwrite only to the no-paint files. @@ -635,11 +636,11 @@ What do you want to do? Toggle Swatch Preview - Alternar previsualización + Ver muestra Toggle Opacity Check - Alternar control de opacidad + Comprobación de opacidad Save Settings @@ -674,7 +675,7 @@ What do you want to do? MLAA Intensity: - Intensidad de MLAA: + Intensidad: Save @@ -702,7 +703,7 @@ What do you want to do? Greyscale - Escala de gris + Escala de grises Color @@ -734,19 +735,19 @@ What do you want to do? Save In - + Guardar en Please fill the Save In field. - + Por favor rellenar el campo Guardar en. Cleanup Settings (Global) - + Opciones de limpieza (global) Cleanup Settings: - + Opciones de limpieza: Cleanup Settings @@ -758,15 +759,15 @@ What do you want to do? Autocenter - Centrado automático + Centrado automático Pegbar Holes - + Huecos de barra de sujeción Field Guide - + Guía de campo @@ -777,7 +778,7 @@ What do you want to do? Pegbar Holes: - Huecos en barra de sujeción: + Huecos de barra de sujeción: Field Guide: @@ -850,26 +851,26 @@ What do you want to do? Update Colors by Using Picked Positions - + Actualizar colores usando posiciones seleccionadas ComboViewerPanel Safe Area (Right Click to Select) - + Área de seguridad (clic derecho para seleccionar) Field Guide - + Guía de campo Camera Stand View - Vista de cámara + Vista detrás de cámara 3D View - + Vista 3D Camera View @@ -877,11 +878,11 @@ What do you want to do? Freeze - + Congelar GUI Show / Hide - Mostrar / Ocultar interfaz + Mostrar en interfaz Toolbar @@ -897,11 +898,11 @@ What do you want to do? Preview - Previsualizar + Previsualización Sub-camera Preview - Previsualizar sub cámara + Previsualización de región Untitled @@ -928,7 +929,7 @@ What do you want to do? CommandListTree ----Separator---- - ----Separador---- + ----separador---- @@ -1022,7 +1023,7 @@ What do you want to do? Palette: - Paleta: + Paleta: Tolerance: @@ -1030,11 +1031,11 @@ What do you want to do? File to convert: - Archivo a convertir: + Archivo a convertir: Output Name: - Nombre de salida: + Nombre de salida: Same as Painted @@ -1058,7 +1059,7 @@ What do you want to do? converted to tlv. - convertido a tlv. + convertido a TLV. No output filename specified: please choose a valid level name. @@ -1066,7 +1067,7 @@ What do you want to do? End: - Fin: + Fin: Level %1 converted to TLV Format @@ -1182,7 +1183,7 @@ de diseñar el color. Remove Unused Styles from Input Palette - + Remover estilos no usados de la paleta de origen @@ -1212,7 +1213,7 @@ de diseñar el color. ( Custom date ) - ( Fecha personalizada ) + ( fecha personalizada ) @@ -1242,11 +1243,11 @@ de diseñar el color. Style Index: - Estilo de índice: + Índice del estilo: Apply to Frames: - Aplicar a fotogramas: + Aplicar a fotogramas: Delete @@ -1258,7 +1259,7 @@ de diseñar el color. Style Index: - Estilo de índice: + Índice del estilo: Apply to Frames: @@ -1281,7 +1282,7 @@ de diseñar el color. Cancel - Cancelar: + Cancelar: Close @@ -1361,7 +1362,7 @@ de diseñar el color. DvItemViewerButtonBar Up One Level - Al nivel superior + A nivel superior New Folder @@ -1369,7 +1370,7 @@ de diseñar el color. Thumbnails View - Vista de miniaturas + Vista de miniaturas List View @@ -1393,19 +1394,19 @@ de diseñar el color. Up - + Arriba New - + Nuevo Icon - + Ícono List - + Lista @@ -1423,39 +1424,39 @@ de diseñar el color. DvTopBar File - Archivo + Archivo Edit - Editar + Editar Scan && Cleanup - Escanear y limpiar + Escaneo y limpieza Level - Nivel + Nivel Xsheet - Planilla + Planilla Cells - Acetatos + Acetatos View - Ver + Ver Windows - Ventana + Ventanas Scan - Escanear + Escaneo @@ -1520,11 +1521,11 @@ de diseñar el color. Width: - Ancho: + Ancho: Height: - Altura: + Altura: H Resolution: @@ -1656,7 +1657,7 @@ de diseñar el color. FileBrowser Folder: - + Carpeta: Can't change file extension @@ -1831,11 +1832,11 @@ de diseñar el color. From: - Desde: + Desde: To: - Hasta: + Hasta: Invalid file @@ -1847,7 +1848,7 @@ de diseñar el color. Folder name: - + Nombre de carpeta: @@ -1899,18 +1900,18 @@ de diseñar el color. - No Current Level - - - Sin nivel actual - + - sin nivel actual - FilmstripFrameHeadGadget Click to Toggle Fixed Onion Skin - Clic para alternar piel de cebolla fija + Clic para alternar la piel de cebolla fija Click / Drag to Toggle Onion Skin - Clic y arrastrar para alternar piel de cebolla + Clic y arrastrar para alternar la piel de cebolla Drag to Extend Onion Skin, Double Click to Toggle All @@ -1932,11 +1933,11 @@ de diseñar el color. FlipBook Flipbook - Folioscopio + Reproductor It is not possible to save Flipbook content. - No es posible guardar el contenido del folioscopio. + No es posible guardar el contenido del reproductor. Saved %1 frames out of %2 in %3 @@ -1948,7 +1949,7 @@ de diseñar el color. :: Shrink - :: Contraer + :: Reducción The file name cannot be empty or contain any of the following characters:(new line) \ / : * ? " | @@ -1970,7 +1971,7 @@ Do you want to overwrite it? It is not possible to take or compare snapshots for Toonz vector levels. - No es posible tomar o comparar capturas de los niveles vectoriales de Toonz. + No es posible tomar o comparar capturas en niveles vectoriales de OpenToonz. @@ -1988,11 +1989,11 @@ Do you want to overwrite it? Relative Onion Skin Toggle - Alternar piel de cebolla relativa + Piel de cebolla relativa Fixed Onion Skin Toggle - Alternar piel de cebolla fija + Piel de cebolla fija @@ -2006,7 +2007,7 @@ Do you want to overwrite it? ImageViewer Flipbook Histogram - Histograma del folioscopio + Histograma del reproductor Clone Preview @@ -2046,11 +2047,11 @@ Do you want to overwrite it? Load Images - Cargar imágenes + Cargar imágenes Append Images - Anexar imágenes + Anexar imágenes Save Images @@ -2092,7 +2093,7 @@ Do you want to overwrite it? InbetweenDialog Inbetween - Intermedio + Intermediar Linear @@ -2108,11 +2109,11 @@ Do you want to overwrite it? Ease In / Ease Out - Desaceleración / Aceleración suaves + Aceleración y desaceleración suave Interpolation: - interpolación: + Interpolación: Cancel @@ -2198,7 +2199,7 @@ Do you want to overwrite it? Save in: - Guardar en: + Guardar en: Width: @@ -2214,7 +2215,7 @@ Do you want to overwrite it? Create - Crear + Crear Cancel @@ -2311,7 +2312,7 @@ Do you want to create it? Image Resolution: - Resolución de la imagen: + Resolución de la imagen: Premultiply @@ -2323,7 +2324,7 @@ Do you want to create it? Subsampling: - Sub-muestreo: + Sub-muestreo: The file %1 is not a sound level. @@ -2335,7 +2336,7 @@ Do you want to create it? Antialias Softness: - Suavizado de los bordes: + Suavizado: Subsampling: @@ -2355,7 +2356,7 @@ Do you want to create it? Resolution - + Resolución @@ -2484,7 +2485,7 @@ Do you want to create it? Apply - + Aplicar @@ -2499,7 +2500,7 @@ Do you want to create it? Palette from Frame: - Paleta desde fotograma: + Paleta desde fotograma: Frames : @@ -2544,7 +2545,7 @@ Do you want to create it? Shrink: - Contraer: + Reducción: Load @@ -2552,7 +2553,7 @@ Do you want to create it? Append Images - Anexar imágenes + Anexar imágenes Append @@ -2567,15 +2568,15 @@ Do you want to create it? LoadLevelPopup On Demand - + A demanda All Icons - + Todos los íconos All Icons & Images - + Todos los íconos e imágenes Load Level @@ -2587,11 +2588,11 @@ Do you want to create it? %1 does not exist. - %1 no existe. + %1 no existe. TLV Caching Behavior - Comportamiento del caché TLV + Comportamiento del caché de TLV Load Subsequence Level @@ -2726,22 +2727,22 @@ Do you want to create it? %1 is not a TNZ file. - %1 no es un archivo TNZ. + %1 no es un archivo TNZ. you can load only TNZ files for render task. - solo es posible cargar archivos TNZ para una tarea de procesamiento. + sólo es posible cargar archivos TNZ para una tarea de procesamiento. you can load only TNZ or CLN files for cleanup task. - solo es posible cargar archivos TNZ o CLN para una tarea de limpieza. + sólo es posible cargar archivos TNZ o CLN para una tarea de limpieza. LocatorPopup Locator - + Localizador @@ -2795,11 +2796,11 @@ Do you want to create it? Visit Web Site - Visitar el sitio web + Visitar el sitio web Cancel - Cancelar + Cancelar &New Scene @@ -2979,7 +2980,7 @@ Do you want to create it? &Paste - &Pegar + &Pegar &Merge @@ -2991,7 +2992,7 @@ Do you want to create it? Paste RGBA Values - Pegar valores RVAα + Pegar valores RVAα &Delete @@ -3007,7 +3008,7 @@ Do you want to create it? &Ungroup - &Desagrupar + Desagr&upar &Bring to Front @@ -3131,7 +3132,7 @@ Do you want to create it? &Scene Settings... - &Opciones de la escena... + Opciones de la e&scena... &Camera Settings... @@ -3231,15 +3232,15 @@ Do you want to create it? &Step 2 - &En 2 + En &2 &Step 3 - &En 3 + En &3 &Step 4 - &En 4 + En &4 &Each 2 @@ -3315,31 +3316,31 @@ Do you want to create it? &Transparency Check - &Comprobación de transparencia + Comprobación de &transparencia &Ink Check - &Comprobación del entintado + Comprobación de ent&intado &Paint Check - &Comprobación de la pintura + Comprobación de &pintura &Fill Check - &Comprobación del relleno + Comprobación de &relleno &Black BG Check - &Comrobación de fondo negro + Compro&bación de fondo negro &Gap Check - &Comprobación de huecos + Comprobación de &huecos &Visualize Vector As Raster - &Visualizar vectorial como imágenes + &Visualizar vectorial como imagen &Histogram @@ -3391,7 +3392,7 @@ Do you want to create it? Matte Channel - Canal alfa + Canal de opacidad Red Channel Greyscale @@ -3415,7 +3416,7 @@ Do you want to create it? &Flipbook - &Folioscopio + &Reproductor &Function Editor @@ -3451,7 +3452,7 @@ Do you want to create it? &Studio Palette - &Paleta de estudio + Paleta de e&studio &Schematic @@ -3459,23 +3460,23 @@ Do you want to create it? Toggle FX/Stage schematic - + Diagrama de efectos/escenario &Scene Cast - &Elenco de la escena + &Componentes de la escena &Style Editor - &Editor de estilos + &Editor de estilo &Toolbar - &Barra de herramientas + Barra de herramien&tas &Tool Option Bar - &Barra de opciones de herramientas + Barra de &opciones de herramientas &Viewer @@ -3495,11 +3496,11 @@ Do you want to create it? &Reset to Default Rooms - &Restablecer a espacios de trabajo predefinidos + &Restablecer espacios de trabajo Onion Skin - Piel de cebolla + Piel de cebolla Duplicate @@ -3527,7 +3528,7 @@ Do you want to create it? Premultiply - Premultiplicar + Premultiplicar Convert to Vectors... @@ -3611,75 +3612,75 @@ Do you want to create it? Activate this column only - Activar solo esta columna + Activar sólo esta columna Activate selected columns - Activar columnas seleccionadas + Activar columnas seleccionadas Activate all columns - Activar todas las columnas + Activar todas las columnas Deactivate selected columns - Desactivar columnas seleccionadas + Desactivar columnas seleccionadas Deactivate all columns - Desactivar todas las columnas + Desactivar todas las columnas Toggle columns activation - Alternar activación de columnas + Alterna la activación de columnas Enable this column only - Habilitar solo esta columna + Habilitar sólo esta columna Enable selected columns - Habilitar columnas seleccionadas + Habilitar columnas seleccionadas Enable all columns - Habilitar todas las columnas + Habilitar todas las columnas Disable all columns - Deshabilitar todas las columnas + Deshabilitar todas las columnas Disable selected columns - Deshabilitar columnas seleccionadas + Deshabilitar columnas seleccionadas Swap enabled columns - Invertir habilitación de columnas + Invertir columnas habilitadas Lock this column only - Bloquear solo esta columna + Bloquear sólo esta columna Lock selected columns - Bloquear columnas seleccionadas + Bloquear columnas seleccionadas Lock all columns - Bloquear todas las columnas + Bloquear todas las columnas Unlock selected columns - Desbloquear columnas seleccionadas + Desbloquear columnas seleccionadas Unlock all columns - Desbloquear todas las columnas + Desbloquear todas las columnas Swap locked columns - Invertir bloqueo de columnas + Invertir bloqueo de columnas Edit Tool @@ -3707,11 +3708,11 @@ Do you want to create it? Fill Tool - Areas - + Rellenar - Áreas Fill Tool - Lines - + Rellenar - Líneas Paint Brush Tool @@ -3731,11 +3732,11 @@ Do you want to create it? Style Picker Tool - Areas - + Selector de estilo - Áreas Style Picker Tool - Lines - + Selector de estilo - Líneas RGB Picker Tool @@ -3751,7 +3752,7 @@ Do you want to create it? Pump Tool - Bombear + Inflar Magnet Tool @@ -3759,7 +3760,7 @@ Do you want to create it? Bender Tool - Dobladora + Pinza Iron Tool @@ -3767,7 +3768,7 @@ Do you want to create it? Cutter Tool - Cortador + Trincheta Skeleton Tool @@ -3831,11 +3832,11 @@ Do you want to create it? Increase brush hardness - Aumentar dureza del pincel + Aumentar dureza del pincel Decrease brush hardness - Disminuir dureza del pincel + Disminuir dureza del pincel Auto Group @@ -3871,7 +3872,7 @@ Do you want to create it? Pencil Mode - Modo del pincel + Modo lápiz Preserve Thickness @@ -3879,7 +3880,7 @@ Do you want to create it? Pressure sensibility - Sensibilidad a la presión + Sensibilidad a la presión Segment Ink @@ -3911,7 +3912,7 @@ Do you want to create it? Show Only Active Skeleton - Mostrar solo esqueleto activo + Mostrar sólo esqueleto activo Brush Preset @@ -3931,15 +3932,15 @@ Do you want to create it? Areas Mode - Modo de áreas + Modo de áreas Lines Mode - Modo de líneas + Modo de líneas Lines & Areas Mode - Modo de líneas y áreas + Modo de líneas y áreas Type @@ -3947,55 +3948,55 @@ Do you want to create it? Normal Type - Tipo normal + Tipo normal Rectangular Type - Tipo rectangular + Tipo rectangular Freehand Type - Tipo a mano alzada + Tipo a mano alzada Polyline Type - Tipo línea poligonal + Tipo línea poligonal TypeTool Font - Tipografía del texto + Tipografía texto TypeTool Size - Tamaño del texto + Tamaño texto TypeTool Style - Estilo del texto + Estilo texto Active Axis - + Eje activo Active Axis - Position - + Eje activo - Posición Active Axis - Rotation - + Eje activo - Rotación Active Axis - Scale - + Eje activo - Escala Active Axis - Shear - + Eje activo - Inclinación Active Axis - Center - + Eje activo - Centrar Build Skeleton Mode @@ -4011,35 +4012,35 @@ Do you want to create it? None Pick Mode - Modo de escoger ninguno + Ningún modo de selección Column Pick Mode - Modo de escoger columna + Modo de selección de columna Pegbar Pick Mode - Modo de escoger barra de sujeción + Modo de selección de barra de sujeción Drawing - Dibujo + Dibujo Animation - Animación + Animación Browser - Explorador + Explorador Pltedit - EditorPlt + EditarPlt Farm - Granja + Granja &Reset Step @@ -4107,7 +4108,7 @@ Do you want to create it? Toggle Autofill on Current Palette Color - Alternar relleno automático en color actual de paleta + Relleno automático con color actual de paleta &Export @@ -4115,19 +4116,19 @@ Do you want to create it? Increase max brush thickness - Aumentar grosor máx. del pincel + Aumentar grosor máx. del pincel Decrease max brush thickness - Disminuir grosor máx. del pincel + Disminuir grosor máx. del pincel Increase min brush thickness - Aumentar grosor mín. del pincel + Aumentar grosor mín. del pincel Decrease min brush thickness - Disminuir grosor mín. del pincel + Disminuir grosor mín. del pincel Pick Screen @@ -4139,7 +4140,7 @@ Do you want to create it? Linetest - LineTest + LineTest &Load As Sub-xsheet... @@ -4171,7 +4172,7 @@ Do you want to create it? Link Flipbooks - Vincular folioscopios + Vincular reproductores &Message Center @@ -4199,7 +4200,7 @@ Do you want to create it? Toggle &Opacity Check - Alternar control de &opacidad + Comprobación de &opacidad Adjust Thickness... @@ -4207,7 +4208,7 @@ Do you want to create it? Inks &Only - &Solo tintas + &Sólo tintas Next Step @@ -4239,11 +4240,11 @@ Do you want to create it? &Load Recent Image Files - &Cargar imágenes recientes + Cargar &imágenes recientes &Clear Recent Flipbook Image List - &Limpiar lista de imágenes de folioscopio + Limpiar lista de imágenes del reprodu&ctor Preview Fx @@ -4251,7 +4252,7 @@ Do you want to create it? &Insert Paste - &Pegar (insertar) + Pegar (&insertar) &Paste Color && Name @@ -4271,7 +4272,7 @@ Do you want to create it? &Opacity Check - &Comprobar opacidad + Comprobación de &opacidad &Replace Parent Directory... @@ -4295,7 +4296,7 @@ Do you want to create it? &Ink#1 Check - &Comprobar tinta № 1 + Comprobación de t&inta № 1 Compare to Snapshot @@ -4323,19 +4324,19 @@ Do you want to create it? Toggle Show/Hide - Alternar mostrar/ocultar + Mostrar/ocultar ON This Only - Sólo esto + Encender sólo este ON Selected - Seleccionado + Encender seleccionado ON All - Todo + Encender todo OFF All @@ -4371,11 +4372,11 @@ Do you want to create it? Swap Lock/Unlock - Alternar bloquear/desbloquear + Invertir bloqueado/desbloqueado Hide Upper Columns - + Ocultar columnas superiores Ruler Tool @@ -4451,7 +4452,7 @@ Do you want to create it? Toggle Edit in Place - Alternar edición en el lugar + Edición en el lugar &ComboViewer @@ -4471,66 +4472,66 @@ Do you want to create it? &Save All Levels - + &Guardar todos los niveles &Camera Capture... - + &Capturar con cámara... Toggle Maximize Panel - + Maximizar panel Toggle Main Window's Full Screen Mode - + Modo a pantalla completa Onion Skin Toggle - Alternar piel de cebolla + Piel de cebolla Zero Thick Lines - + Líneas de grosor nulo Pressure Sensitivity - + Sensibilidad a la presión Toggle Link to Studio Palette - + Vincular a paleta de estudio Remove Reference to Studio Palette - + Eliminar referencia a paleta de estudio &Startup Popup... - + Diálogo &inicial... &Fast Render to MP4 - + Procesar &rápido a MP4 Record Audio - + Grabar sonido MatchlinesDialog Apply Match Lines - Aplicar líneas de coincidencia + Aplicar líneas de coincidencia Add Match Line Styles - Agregar estilos de línea de coincidencia + Agregar estilos de línea de coincidencia Use Style: - Usar estilo: + Usar estilo: Line Prevalence @@ -4660,7 +4661,7 @@ Nota: Los comandos duplicados serán ignorados. Sólo el último aparecerá en l Merge Tlv Levels - Fusionar niveles TLV + Fusionar niveles TLV Save in: @@ -4683,7 +4684,7 @@ Nota: Los comandos duplicados serán ignorados. Sólo el último aparecerá en l It is not possible to execute the merge column command because only one columns is selected. - No es posible ejecutar el comando de fusión de columnas porque solo hay una seleccionada. + No es posible ejecutar el comando de fusión de columnas porque sólo hay una seleccionada. @@ -4770,7 +4771,7 @@ What do you want to do? MyViewFinder Camera is not available - + La cámara no se encuentra disponible @@ -4781,7 +4782,7 @@ What do you want to do? File Name: - Nombre del archivo: + Nombre del archivo: Options @@ -4789,7 +4790,7 @@ What do you want to do? File Format: - Formato de archivo: + Formato de archivo: Output Camera: @@ -4797,15 +4798,15 @@ What do you want to do? Use Sub-Camera - Usar sub-cámara + Usar región To Frame: - Hasta fotograma: + Hasta fotograma: From Frame: - Desde fotograma: + Desde fotograma: Shrink: @@ -4817,7 +4818,7 @@ What do you want to do? None - Ninguno + Ninguna Fx Schematic Flows @@ -4829,7 +4830,7 @@ What do you want to do? Multiple Rendering: - Procesamiento múltiple: + Procesamiento múltiple: Do stereoscopy @@ -4837,7 +4838,7 @@ What do you want to do? Apply Shrink to Main Viewer - Aplicar reducción a la vista principal + Aplicar reducción al visor principal Standard @@ -4877,7 +4878,7 @@ What do you want to do? to FPS: - a FPS: + a FPS: Stretch from FPS: @@ -4925,15 +4926,15 @@ What do you want to do? 8 bits - 8 bits + 8 bits 16 bits - 16 bits + 16 bits Columns - Columnas + Columnas Camera Shift: @@ -4941,7 +4942,7 @@ What do you want to do? Stereoscopic Render: - Procesamiento estereoscópico: + Procesamiento estereoscópico: Camera Settings @@ -5045,7 +5046,7 @@ What do you want to do? Frame Rate (linked to Scene Settings): - Velocidad de fotogramas (vinculado a opciones de escena): + Velocidad (fps, vinculada a opciones de escena): To: @@ -5081,7 +5082,7 @@ What do you want to do? Render - Procesamiento + Procesar @@ -5161,189 +5162,193 @@ What do you want to do? PencilTestPopup Camera Capture - + Capturar con cámara Refresh - Actualizar + Actualizar File - Archivo + Archivo Options - Opciones + Opciones Save images as they are captured - + Guardar imágenes al capturarlas Image adjust - + Ajustes de imagen Upside down - + Dar vuelta Capture white BG - + Capturar fondo blanco Display - + Mostrar Show onion skin - + Mostrar piel de cebolla Interval timer - + Temporizador de intervalos Use interval timer - + Usar temporizador Capture [Return key] - + Capturar +[tecla Intro] Close - Cerrar + Cerrar Next Level - + Siguiente nivel Camera: - + Cámara: Resolution: - Resolución: + Resolución: Name: - Nombre: + Nombre: Frame: - Fotograma: + Fotograma: File Type: - + Tipo de archivo: Save In: - Guardar en: + Guardar en: Color type: - + Tipo de color: Threshold: - Umbral: + Umbral: Contrast: - Contraste: + Contraste: Brightness: - Brillo: + Brillo: BG reduction: - + Reducción fondo: Opacity(%): - + Opacidad(%): Interval(sec): - + Intervalo(seg): No camera found - + No se encontró ninguna cámara - Select camera - - + - Seleccionar cámara - Start Capturing [Return key] - + Comenzar captura +[tecla Intro] Stop Capturing [Return key] - + Detener captura +[tecla Intro] No level name specified: please choose a valid level name - No se ha especificado un nombre de nivel: por favor escoger un nombre válido + No se ha especificado un nombre de nivel: por favor escoger un nombre válido Folder %1 doesn't exist. Do you want to create it? - La carpeta %1 no existe. + La carpeta %1 no existe. ¿Crearla? Unable to create - No es posible crear + No es posible crearla The level name specified is already used: please choose a different level name. - + El nombre de nivel especificado ya está en uso: por favor escoger un nombre diferente The save in path specified does not match with the existing level. - + La ruta especificada para guardar no coincide con la del nivel existente. The captured image size does not match with the existing level. - + El tamaño de la imagen capturada no coincide con el del nivel existente. File %1 does exist. Do you want to overwrite it? - + El archivo %1 ya existe. +¿Sobrescribirlo? Failed to load %1. - + Falla al cargar %1. Video Capture Filter Settings... - + Opciones de filtrado de captura en video... Load Selected Image - + Cargar imagen seleccionada No image selected. Please select an image in the Xsheet. - + Ninguna imagen seleccionada. Por favor seleccionar una imagen en la planilla. The selected image is not in a raster level. - + La imagen seleccionada no pertenece a un nivel de imagen. The selected image size does not match the current camera settings. - + El tamaño de la imagen seleccionada no coincide con las opciones actuales de la cámara @@ -5354,19 +5359,19 @@ Do you want to overwrite it? Luminance: - Luminancia: + Luminancia: Saturation: - Saturación: + Saturación: Hue: - Tono: + Tono: Transparency: - Transparencia: + Transparencia: Fade to Color @@ -5374,7 +5379,7 @@ Do you want to overwrite it? Color: - Color: + Color: Fade @@ -5433,15 +5438,15 @@ Do you want to overwrite it? Use Default Viewer for Movie Formats - Usar la vista predefinida para formatos de película + Usar visor predefinido para formatos de película Minimize Raster Memory Fragmentation* - Minimizar fragmentación de memoria de imágenes* + Minimizar fragmentación de imágenes en memoria* Save Automatically Every Minutes - Guardar automáticamente cada minutos + Guardar automáticamente cada ciertos minutos Backup Animation Levels when Saving @@ -5449,7 +5454,7 @@ Do you want to overwrite it? Cells Only - Solo acetatos + Sólo acetatos Cells and Column Data @@ -5469,7 +5474,7 @@ Do you want to overwrite it? Open Flipbook after Rendering - Abrir folioscopio luego del procesamiento + Abrir el reproductor luego del procesamiento Unit: @@ -5477,23 +5482,23 @@ Do you want to overwrite it? Camera Unit: - Unidades de la cámara: + Unidades de cámara: Flipbook Shrink: - Reducir folioscopio: + Reducción del reproductor: Step: - Intervalo: + Intervalo: Height*: - Altura*: + Altura*: Loading - Cargando + Carga Expose Loaded Levels in Xsheet @@ -5509,7 +5514,7 @@ Do you want to overwrite it? Keep Original Cleaned Up Drawings As Backup - Mantener los dibujos originales limpios como respaldo + Mantener los originales de los dibujos limpiados como respaldo Animation @@ -5517,7 +5522,7 @@ Do you want to overwrite it? Default Interpolation: - Interpolación predefinida: + Interpolación predefinida: Linear @@ -5525,15 +5530,15 @@ Do you want to overwrite it? Speed In / Speed Out - Aceleración / Desaceleración rápida + Aceleraciones y desaceleraciones rápidas Ease In / Ease Out - Aceleración / Desaceleración suave + Aceleraciones y desaceleraciones suaves Ease In / Ease Out % - Aceleración / Desaceleración suave % + Aceleraciones y desaceleraciones suaves % Animation Step: @@ -5553,11 +5558,11 @@ Do you want to overwrite it? Display in a New Flipbook Window - Mostrar en nueva ventana de folioscopio + Mostrar en una nueva ventana de reproductor Rewind after Playback - Retroceder después de reproducir + Retroceder al comienzo después de reproducir Onion Skin @@ -5565,11 +5570,11 @@ Do you want to overwrite it? Following Frames Correction: - Corrección de fotogramas siguientes: + Corrección de fotogramas siguientes: Previous Frames Correction: - Corrección de fotogramas anteriores: + Corrección de fotogramas anteriores: Display Lines Only @@ -5581,15 +5586,15 @@ Do you want to overwrite it? Automatically Refresh Folder Contents - Actualizar contenido de carpeta automáticamente + Actualizar automáticamente contenido de carpetas Undo Memory Size (MB): - Tamaño de memoria de deshacer (MB): + Deshacer - Tamaño de memoria (MB): Render Task Chunk Size: - Tamaño de porción de tarea de procesamiento: + Tamaño del bloque de procesamiento: Show Info in Rendered Frames @@ -5597,11 +5602,11 @@ Do you want to overwrite it? *Changes will take effect the next time you run Toonz - *Los cambios entrarán en efecto la próxima vez que Toonz sea ejecutado. + *Los cambios entrarán en vigor la próxima vez que se ejecute OpenToonz Language*: - Idioma*: + Idioma*: cm @@ -5613,31 +5618,31 @@ Do you want to overwrite it? inch - pulgada + pulgadas field - campo + campos Xsheet Autopan during Playback - Desplazamiento automático de planilla al reproducir + Desplazar automáticamente la planilla durante la reproducción Level Strip Frames Width*: - Ancho de fotogramas en cinta de nivel*: + Ancho de fotogramas en cinta de nivel*: Capture - Captura + Captura Frame Rate: - Velocidad de fotogramas: + Velocidad (fps): Scan File Format: - Formato de archivo para escaneo: + Formato de archivo al escanear: Default Level Type: @@ -5645,15 +5650,15 @@ Do you want to overwrite it? Toonz Vector Level - + Nivel vectorial de Toonz Toonz Raster Level - + Nivel de imagen de Toonz Raster Level - + Nivel de imagen Width: @@ -5661,7 +5666,7 @@ Do you want to overwrite it? Height: - Altura: + Altura: DPI: @@ -5673,11 +5678,11 @@ Do you want to overwrite it? Minimize Savebox after Editing - Minimizar marco de seguridad luego de editar + Minimizar marco delimitador luego de editar Use the TLV Savebox to Limit Filling Operations - Usar el marco de seguridad de TLV para limitar las operaciones de rellenado + Rellenar usando el marco delimitador en niveles de imagen de Toonz Paper Thickness: @@ -5685,27 +5690,27 @@ Do you want to overwrite it? Enable Version Control * - Habilitar control de versiones * + Habilitar control de versiones * Transparency Check - Comprobar transparencia + Comprobación de transparencia Ink Color on White Bg: - Color de tinta sobre fondo blanco: + Tinta sobre fondo blanco: Ink Color on Black Bg: - Color de tinta sobre fondo negro: + Tinta sobre fondo negro: Paint Color: - Color a pintar: + Pintura: Fit to Flipbook - Ajustar a folioscopio + Ajustar al reproductor New Level Format @@ -5725,7 +5730,7 @@ Do you want to overwrite it? Show Lines with Thickness 0 - Mostrar líneas con grosor 0 + Mostrar líneas con grosor nulo Antialiased region boundaries @@ -5733,7 +5738,7 @@ Do you want to overwrite it? Level Settings by File Format: - Opciones de nivel por formato de archivo: + Opciones de nivel según el formato de archivo: Edit @@ -5745,7 +5750,7 @@ Do you want to overwrite it? Next/Previous Step Frames: - Fotogramas del intervalo anterior/siguiente: + Fotogramas de intervalo anterior/siguiente: Ignore Alpha Channel on Levels in Column 1 @@ -5753,7 +5758,7 @@ Do you want to overwrite it? Minimize Raster Memory Fragmentation * - Minimizar fragmentación de memoria de imágenes * + Minimizar fragmentación de imágenes en memoria * * Changes will take effect the next time you run Toonz @@ -5761,7 +5766,7 @@ Do you want to overwrite it? Move Current Frame by Clicking on Xsheet / Numerical Columns Cell Area - Mover fotograma actual haciendo clic en la planilla o el área de acetatos de las columnas numéricas + Mover fotograma actual haciendo clic en el área de acetatos de las columnas numéricas de la planilla Enable Actual Pixel View on Scene Editing Mode @@ -5773,7 +5778,7 @@ Do you want to overwrite it? Show Raster Images Darken Blended in Camstand View - Mostrar imágenes fundidas sobre la vista de cámara + Mostrar imágenes oscurecidas en vista detrás de cámara Show "ABC" Appendix to the Frame Number in Xsheet Cell @@ -5781,7 +5786,7 @@ Do you want to overwrite it? Automatically Remove Scene Number from Loaded Level Name - Eliminar automáticamente el número de escena del nombre de nivel cargado + Eliminar automáticamente el número de escena del nombre de un nivel cargado Multi Layer Style Picker : Switch Levels by Picking @@ -5789,7 +5794,7 @@ Do you want to overwrite it? Onion Skin ON - Piel de cebolla activa + Activar piel de cebolla Enable Version Control* @@ -5797,15 +5802,15 @@ Do you want to overwrite it? Category - Categoría + Categorías Undo Memory Size (MB) - Tamaño de memoria de deshacer (MB) + Deshacer - Tamaño de memoria (MB) Icon Size * - Tamaño de ícono * + Tamaño de íconos * X @@ -5813,7 +5818,7 @@ Do you want to overwrite it? Viewer Shrink - Reducir visor + Visor Reducción Step @@ -5829,15 +5834,15 @@ Do you want to overwrite it? ChessBoard Color 1 - Damero color 1 + Color 1 del damero Chessboard Color 2 - Damero color 2 + Color 2 del damero Viewer Zoom Center - Centro del zoom del visor + Centro del zoom en visor Language *: @@ -5845,11 +5850,11 @@ Do you want to overwrite it? Default TLV Caching Behavior - + Caché de niveles de imagen de Toonz Column Icon - Ícono de columna + Miniatura de columnas Height: @@ -5861,23 +5866,23 @@ Do you want to overwrite it? Following Frames Correction: - Corrección fotogramas siguientes: + Corrección de fotogramas siguientes: Previous Frames Correction: - Corrección fotogramas anteriores: + Corrección de fotogramas anteriores: Ink Color on White Bg: - Color de tinta sobre fondo blanco: + Tinta sobre fondo blanco: Ink Color on Black Bg: - Color de tinta sobre fondo negro: + Tinta sobre fondo negro: Paint Color: - Color de pintura: + Pintura: Replace Toonz Level after SaveLevelAs command @@ -5885,11 +5890,11 @@ Do you want to overwrite it? Show Keyframes on Cell Area - Mostrar fotogramas clave en el área de acetatos + Mostrar fotogramas clave en área de acetatos Mouse Cursor - Cursor del ratón + Puntero del ratón Viewer Center @@ -5897,7 +5902,7 @@ Do you want to overwrite it? On Demand - Bajo demanda + A demanda All Icons @@ -5921,156 +5926,157 @@ Do you want to overwrite it? Disabled - Deshabilitado + Deshabilitada Enabled - Habilitado + Habilitada Use Xsheet as Animation Sheet - Usar planilla como planilla de animación + Usar la planilla como planilla de animación Palette Type on Loading Raster Image as Color Model - Al cargar una imagen usar tipo de paleta como modelo de color + Tipo de paleta al cargar una imagen como modelo de color Save Automatically - + Guardar automáticamente Automatically Save the Scene File - + Archivo de escena Automatically Save Non-Scene Files - + Archivos que no pertenecen a la escena My Documents/OpenToonz* - + Mis Documentos/OpenToonz* Desktop/OpenToonz* - + Escritorio/OpenToonz* Stuff Folder* - + Carpeta de contenido* Custom* - + Personalizada* Custom Project Path(s): - + Rutas personalizadas de proyectos: Advanced: Multiple paths can be separated by ** (No Spaces) - + Avanzado: Es posible separar varias rutas usando ** (no espacios) All imported images will use the same DPI - + Todas las imágenes importadas usarán la misma densidad de PPP Import/Export - + Importación/Exportación Show Onion Skin During Playback - + Mostrar piel de cebolla al reproducir pixel - + píxeles Interval(Minutes): - + Intervalo(minutos): Additional Project Locations - + Ubicaciones adicionales de proyectos Pixels Only: - + Sólo píxeles: Rooms *: - Espacios de trabajo *: + Espacios de trabajo *: OpenToonz can use FFmpeg for additional file formats. - + OpenToonz es capaz de usar FFmpeg para producir formatos de archivo adicionales. FFmpeg is not bundled with OpenToonz - + FFmpeg no se incluye con OpenToonz NOTE: This is an experimental feature. - + NOTA: Esta es una característica experimental. Please SAVE YOUR WORK before exporting in MP4, WEBM, or GIF format. - + Por favor GUARDAR EL TRABAJO antes de exportar en formatos MP4, WEBM o GIF. Please provide the path where FFmpeg is located on your computer. - + Por favor indicar la ruta a la ubicación de FFmpeg en el sistema. FFmpeg Path: - + Ruta a FFmpeg: Number of seconds to wait for FFmpeg to complete processing the output: - + Cantidad de segundos a esperar para que FFmpeg complete el procesamiento: Note: FFmpeg begins working once all images have been processed. - + Nota: FFmpeg recién comienza su trabajo una vez que todas las imágenes hayan sido procesadas. FFmpeg Timeout: - + Tiempor de espera por FFmpeg: Show Startup Window when OpenToonz Starts - + Mostrar la ventana de inicio al abrir OpenToonz Numpad keys are assigned to the following commands. Is it OK to release these shortcuts? - + Las teclas numéricas están asignadas a los siguientes comandos. +¿Liberar estos atajos? OK - Aceptar + Aceptar Cancel - + Cancelar Use Numpad and Tab keys for Switching Styles - + Usar las teclas numéricas y el tabulador para cambiar de estilos Rooms*: - + Espacios de trabajo*: Please indicate where you would like exports from Fast Render(MP4) to go. - + Por favor indicar dónde se desea ubicar los archivos generados usando Procesar rápido a MP4. Fast Render Path: - + Ruta para procesamiento rápido: @@ -6117,7 +6123,7 @@ Do you want to overwrite it? Greyscale - Escala de gris + Escala de grises Color @@ -6149,7 +6155,7 @@ Do you want to overwrite it? MLAA Intensity: - Intensidad de MLAA: + Intensidad: @@ -6193,11 +6199,11 @@ Do you want to overwrite it? Append $scenepath to +drawings - Anexar $scenepath a +dibujos + Anexar $scenepath a +drawings Append $scenepath to +inputs - Anexar $scenepath a +entradas + Anexar $scenepath a +inputs Append $scenepath to +extras @@ -6273,7 +6279,7 @@ Do you want to overwrite it? QObject System date tampered. - Fecha del sistema alterada. + Fecha del sistema alterada. No more Undo operations available. @@ -6291,7 +6297,7 @@ Visitar el sitio web para obtener más información. Quit - Salir + Salir Cancel @@ -6319,7 +6325,7 @@ Visitar el sitio web para obtener más información. Scene Cast - Elenco de la escena + Componentes de la escena The color model palette is different from the destination palette. @@ -6381,7 +6387,7 @@ What do you want to do? Style Editor - Editor de estilos + Editor de estilo Viewer @@ -6393,7 +6399,7 @@ What do you want to do? FlipBook - Folioscopio + Reproductor Function Editor @@ -6542,7 +6548,7 @@ algunas regiones son demasiado altas. Sensibility Error - Error de sensibilidad + Error de sensibilidad No Frame Found @@ -6569,7 +6575,7 @@ el nivel tiene que ser guardado antes. It is not possible to track the level: undefinied error. - No es posible rastrear el nivel: + No es posible rastrear el nivel: error no definido. @@ -6609,7 +6615,7 @@ Do you want to import it or load it from its original location? %1: the current scene has been modified. Do you want to save your changes? - %1: la escena actual ha sido modificada. + %1: la escena actual ha sido modificada. ¿Se desea guardar los cambios? @@ -6676,7 +6682,7 @@ Are you sure you want to revert to previous version? Select an empty cell or a sub-xsheet cell. - Seleccionar un acetato vacío o un acetato de una sub-planilla. + Seleccionar un acetato vacío o un acetato de una sub-planilla. Collapsing columns: what you want to do? @@ -6781,7 +6787,7 @@ Are you sure you want to revert to previous version? The license validation process was not able to confirm the right to use this software on this computer. Please contact [ support@toonz.com ] for assistance. - El proceso de validación de la licencia no ha sido capaz de confirmar el derecho a usar este programa en esta computadora. + El proceso de validación de la licencia no ha sido capaz de confirmar el derecho a usar este programa en esta computadora. Por favor contactar [ support@toonz.com ] para obtener asistencia. @@ -6798,7 +6804,7 @@ Are you sure you want to revert to previous version? Change project - Cambiar proyecto + Cambiar proyecto It is not possible to delete the selection. @@ -6970,11 +6976,11 @@ Algunos niveles no han sido cargados porque su versión no es soportada. Date Created - Fecha de creación + Fecha creado Date Modified - Fecha de modificación + Fecha modificado Size @@ -6982,7 +6988,7 @@ Algunos niveles no han sido cargados porque su versión no es soportada. Frames - Fotogramas + Fotog. Version Control @@ -7006,7 +7012,7 @@ Algunos niveles no han sido cargados porque su versión no es soportada. The style index you specified is not available in the palette of the destination level. - El índice de estilo especificado no se encuentra disponible en la paleta del nivel de destino. + El índice del estilo especificado no se encuentra disponible en la paleta del nivel de destino. The style index range you specified is not valid: please separate values with a comma (e.g. 1,2,5) or with a dash (e.g. 4-7 will refer to indexes 4, 5, 6 and 7). @@ -7038,7 +7044,7 @@ Algunos niveles no han sido cargados porque su versión no es soportada. It is possible to merge only Toonz vector levels or standard raster levels. - Solo es posible fusionar niveles vectoriales de OpenToonz o niveles de imagen estándar. + Sólo es posible fusionar niveles vectoriales de Toonz o niveles de imagen estándar. It is not possible to display the file %1: no player associated with its format @@ -7078,7 +7084,7 @@ Algunos niveles no han sido cargados porque su versión no es soportada. It is not possible to save images in camera stand view. - No es posible guardar las imágenes en la vista de cámara. + No es posible guardar las imágenes en la vista detrás de cámara. The preview images are not ready yet. @@ -7172,7 +7178,7 @@ Do you want to save your changes? The scene %1 was created with Toonz and cannot be loaded in LineTest. - La escena %1 fue creada con OpenToonz y no puede ser cargada en LineTest. + La escena %1 fue creada con OpenToonz y no puede ser cargada en LineTest. File %1 already exists. @@ -7309,16 +7315,16 @@ Are you sure ? Following file(s) are modified. - El(los) siguiente(s) archivo(s) ha(n) sido modificado(s). + El(los) siguiente(s) archivo(s) ha(n) sido modificado(s). Are you sure to - ¿Seguro de + ¿Seguro de anyway ? - de todas formas? + igual? OK @@ -7466,7 +7472,7 @@ Are you sure to Palette Gizmo - Control de paleta + Control de paleta Create Level %1 at Column %2 @@ -7626,7 +7632,7 @@ error no definido. Toggle cycle of %1 - Alternar ciclo de %1 + Alternar el ciclo de %1 History @@ -7638,7 +7644,7 @@ error no definido. ----Separator---- - ----Separador---- + ----separador---- [Drag] to move position, [Double Click] to edit title @@ -7683,81 +7689,88 @@ error no definido. %1: the current scene has been modified. What would you like to do? - + %1: la escena actual ha sido modificada. +¿Qué hacer? Save All - + Guardar todo Save Scene Only - + Guardar sólo escena Discard Changes - + Descartar cambios The following file(s) have been modified. - + Los siguientes archivos han sido modificados. + + What would you like to do? - + +¿Qué hacer? Save Changes - + Guardar cambios Anyway - + igual This scene is incompatible with pixels only mode of the current OpenToonz version. What would you like to do? - + Esta escena es incompatible con el modo de sólo píxeles de la versión actual de OpenToonz. +¿Qué hacer? Turn off pixels only mode - + Apagar el modo de sólo píxeles Keep pixels only mode on and resize the scene - + Mantener el modo de sólo píxeles activado y cambiar el tamaño de la escena Hide Zero Thickness Lines - + Ocultar líneas de grosor nulo Show Zero Thickness Lines - + Mostrar líneas de grosor nulo <custom> - <personalizado> + <personalizado> The file name already exists. Do you want to overwrite it? - + El nombre de archivo ya existe. +¿Sobrescribirlo? Deleting "%1". Are you sure? - + A punto de borrar "%1". +¿Seguro? FFmpeg not found, please set the location in the Preferences and restart. - + No se encontró a FFmpeg, por favor definir su ubicación en las Preferencias y reiniciar. Skipping frame. - + Omitiendo fotograma. @@ -7830,7 +7843,7 @@ El archivo de sonido no será incluido en el clip procesado. RenderListener Finalizing render, please wait. - + Finalizando el procesamiento, por favor esperar. @@ -7895,7 +7908,7 @@ El archivo de sonido no será incluido en el clip procesado. Delete Room - Borrar espacio de trabajo + Borrar espacio de trabajo Room @@ -8728,7 +8741,7 @@ Por favor enviar o revertir los cambios antes. SaveImagesPopup Save Flipbook Images - Guardar imágenes de folioscopio + Guardar imágenes del reproductor Save @@ -8890,31 +8903,31 @@ Por favor enviar o revertir los cambios antes. SceneSettingsPopup Scene Settings - Opciones de escena + Opciones de la escena Frame Rate: - Velocidad de fotogramas: + Velocidad (fps): Camera BG Color: - Color de fondo de la cámara: + Color de fondo de cámara: Viewer BG Color: - Color de fondo del visor: + Color de fondo del visor: Preview BG Color: - Color de fondo de previsualización: + Color de fondo previsualización: Checkerboard Color 1: - Damero Color 1: + Damero color 1: Checkerboard Color 2: - Damero Color 2: + Damero color 2: Image Subsampling: @@ -8922,19 +8935,19 @@ Por favor enviar o revertir los cambios antes. Marker Interval: - Intervalo de marcadores: + Intervalo de marcadores: A/R: - Proporción: + Prop: Safe Area Box 2: - Área de seguridad 2: + Área de seguridad marco 2: Safe Area Box 1: - Área de seguridad 1: + Área de seguridad marco 1: TLV Subsampling: @@ -8942,11 +8955,11 @@ Por favor enviar o revertir los cambios antes. Start Frame: - Fotograma inicial: + Fotograma inicial: Level And Column Icon: - Ícono de nivel y columna: + Ícono de nivel y columna: Field Guide Size: @@ -8954,7 +8967,7 @@ Por favor enviar o revertir los cambios antes. Frame Rate: - Velocidad de fotogramas: + Velocidad (fps): Marker Interval: @@ -8962,7 +8975,7 @@ Por favor enviar o revertir los cambios antes. Start Frame: - Fotograma inicial: + Fotograma inicial: @@ -8985,23 +8998,23 @@ Por favor enviar o revertir los cambios antes. Select - + Seleccionar Show - + Mostrar Hide - + Ocultar Show / Hide - + Mostrar / Ocultar Reset Subcamera - Restablecer sub-cámara + Restablecer región Select Camera @@ -9024,7 +9037,7 @@ Por favor enviar o revertir los cambios antes. Camera Stand View - Vista de cámara + Vista detrás de cámara 3D View @@ -9040,7 +9053,7 @@ Por favor enviar o revertir los cambios antes. Sub-camera Preview - Previsualización de sub-cámara + Previsualización de región Untitled @@ -9068,11 +9081,11 @@ Por favor enviar o revertir los cambios antes. Safe Area (Right Click to Select) - + Área de seguridad (clic derecho para seleccionar) Field Guide - + Guía de campo @@ -9087,74 +9100,74 @@ Por favor enviar o revertir los cambios antes. Couldn't find any matching command. - + No fue posible encontrar ningún comando coincidente. Export Current Shortcuts - + Exportar atajos actuales Delete Current Preset - + Borrar el ajuste actual Save Current Shortcuts as New Preset - + Guardar los atajos actuales como un nuevo ajuste Apply - Aplicar + Aplicar Use selected preset as shortcuts - + Usar los atajos del ajuste seleccionado Clear All Shortcuts - + Borrar todos los atajos This will erase ALL shortcuts. Continue? - + Esto eliminará TODOS los atajos. ¿Continuar? This will overwrite all current shortcuts. Continue? - + Esto sobrescribirá todos los atajos actuales. ¿Continuar? A file named - + Ya existe un archivo llamado already exists. Do you want to replace it? - + ¿Reemplazarlo? OpenToonz - Setting Shortcuts - + OpenToonz - definición de atajos Included presets cannot be deleted. - + No es posible borrar los ajustes predefinidos. Are you sure you want to delete the preset: - + ¿Seguro borrar el ajuste: ? - + ? Load from file... - + Cargar desde archivo... ShortcutTree Menu Commands - Comandos de los menúes + Comandos de menúes File @@ -9166,7 +9179,7 @@ Por favor enviar o revertir los cambios antes. Scan & Cleanup - Escaneo y Limpieza + Escaneo y limpieza Level @@ -9190,7 +9203,7 @@ Por favor enviar o revertir los cambios antes. Right-click Menu Commands - Comandos de los menúes con botón derecho + Comandos de menúes con botón derecho Tools @@ -9222,7 +9235,7 @@ Por favor enviar o revertir los cambios antes. Playback - + Reproducir @@ -9298,7 +9311,7 @@ Assign to '%3'? Draw - Dibujar + Dibujo Xsheet @@ -9334,7 +9347,7 @@ Assign to '%3'? Scan && Cleanup - Escaneo y Limpieza + Escaneo y limpieza Level @@ -9365,152 +9378,153 @@ Assign to '%3'? StartupPopup OpenToonz Startup - + Inicio de OpenToonz Choose Project - + Escoger un proyecto Create a New Scene - + Crear una nueva escena Open Scene - + Abrir una escena Scene Name: - + Nombre de la escena: Width: - Ancho: + Ancho: Height: - Altura: + Altura: DPI: - PPP: + PPP: X - X + X Resolution: - Resolución: + Resolución: Frame Rate: - Velocidad de fotogramas: + Velocidad (fps): Add - Agregar + Agregar Remove - Eliminar + Eliminar Show this at startup - + Mostrar esto al inicio Create Scene - + Crear la escena New Project... - + Nuevo proyecto... Open Another Scene... - + Abrir otra escena... pixel - + píxeles cm - cm + cm mm - mm + mm inch - pulgada + pulgadas field - campo + campos Save In: - Guardar en: + Guardar en: Camera Size: - + Tamaño de la cámara: Units: - + Unidades: No Recent Scenes - + no hay escenas recientes The name cannot be empty. - + El nombre no puede estar vacío. The chosen file path is not valid. - + La ruta escogida para el archivo no es válida. The width must be 1 or more. - + El ancho debe ser mayor o igual a 1. The height must be 1 or more. - + La altura debe ser mayor o igual a 1. The frame rate must be 1 or more. - + La velocidad de fotogramas debe ser mayor o igual a 1. Preset name - + Nombre del ajuste Enter the name for %1 - + Ingresar el nombre para %1 Error : Preset Name is Invalid - + Error : El nombre del ajuste no es válido The preset name must not use ','(comma). - + El nombre del ajuste no debe usar ','(comas). Bad camera preset - + Ajuste de cámara incorrecto '%1' doesn't seem to be a well formed camera preset. Possibly the preset file has been corrupted - + '%1' no parece ser un ajuste de cámara bien formado. +Es posible que el archivo del ajuste esté corrupto @@ -9518,36 +9532,36 @@ Possibly the preset file has been corrupted Sub-scene controls: Click the arrow button to create a new sub-xsheet - Controles de sub-escena: + Controles de sub-escena: Clic en el botón con una flecha para crear una nueva sub-planilla Disable Edit in Place - Deshabilitar edición en el lugar + Deshabilitar edición en el lugar Enable Edit in Place - Habilitar edición en el lugar + Habilitar edición en el lugar Exit Sub-xsheet (1 Level Up) - Salir de sub-planilla (arriba 1 nivel) + Salir de sub-planilla (arriba 1 nivel) Exit Sub-xsheet (2 Levels Up) - Salir de sub-planilla (arriba 2 niveles) + Salir de sub-planilla (arriba 2 niveles) Exit Sub-xsheet (3 or More Levels Up) - Salir de sub-planilla (arriba 3 niveles o más) + Salir de sub-planilla (arriba 3 niveles o más) Enter Sub-xsheet - Ingresar a sub-planilla + Ingresar a sub-planilla Current Scene - Escena actual + Escena actual @@ -9558,11 +9572,11 @@ Clic en el botón con una flecha para crear una nueva sub-planilla It is not possible to save automatically an untitled scene. - No es posible guardar de forma automática una escena sin título. + No es posible guardar de forma automática una escena sin título. It is not possible to automatically save an untitled scene. - + No es posible guardar de forma automática una escena sin título. @@ -9617,7 +9631,7 @@ Clic en el botón con una flecha para crear una nueva sub-planilla Successfull Steps: - Intervalos exitosos: + Intervalos exitosos: Priority: @@ -9645,11 +9659,11 @@ Clic en el botón con una flecha para crear una nueva sub-planilla Shrink: - Contraer: + Reducción: Multiple Rendering: - Procesamiento múltiple: + Procesamiento múltiple: None @@ -9709,11 +9723,11 @@ Clic en el botón con una flecha para crear una nueva sub-planilla Remove -> - Eliminar -> + Eliminar -> <- Add - < - Agregar + < - Agregar Multimedia: @@ -9902,7 +9916,7 @@ Clic en el botón con una flecha para crear una nueva sub-planilla TopBar Lock Rooms Tab - Bloquear solapa de espacios de trabajo + Bloquear solapas de espacios de trabajo @@ -9917,7 +9931,7 @@ Clic en el botón con una flecha para crear una nueva sub-planilla Sensibility: - Sensibilidad: + Sensibilidad: Variable Region Size @@ -9996,11 +10010,11 @@ Clic en el botón con una flecha para crear una nueva sub-planilla Toggle Swatch Preview - Alternat previsualización + Ver muestra Toggle Centerlines Check - Control de líneas centrales + Comprobación de líneas centrales Mode @@ -10196,15 +10210,15 @@ Por favor ver la guía de usuario para obtener más detalles. Camera Stand Toggle - Alternar cámara + Detrás de cámara Render Toggle - Alternar procesado + Procesado Lock Toggle - Alternar bloqueo + Bloqueo Click to play the soundtrack back @@ -10216,7 +10230,7 @@ Por favor ver la guía de usuario para obtener más detalles. Click to select the type of motion path - Clic para seleccionar el tipo de trayectoria de movimiento + Clic para seleccionar el tipo de trayectoria de movimiento Click to select column, drag to move it @@ -10224,15 +10238,15 @@ Por favor ver la guía de usuario para obtener más detalles. Click to unlink column - Clic para desvincular una columna + Clic para desvincular una columna Click and drag to link column - Arastrar para vincular una columna + Arastrar para vincular una columna Master column of linked columns - Columna superior de las columnas vinculadas + Columna superior de las columnas vinculadas &Subsampling 1 @@ -10252,11 +10266,11 @@ Por favor ver la guía de usuario para obtener más detalles. Preview Visibility Toggle - Alternar visibilidad de previsualización + Visibilidad en previsualización Camera Stand Visibility Toggle - Alternar visibilidad desde cámara + Visibilidad desde detrás de cámara Alt + Click to Toggle Thumbnail @@ -10275,58 +10289,58 @@ Por favor ver la guía de usuario para obtener más detalles. XsheetGUI::ColumnTransparencyPopup None - Ninguno + Ninguno Red - + Rojo Green - + Verde Blue - + Azul DarkYellow - + AmarilloOscuro DarkCyan - + CianOscuro DarkMagenta - + MagentaOscuro N.B. Filter doesn't affect vector levels - + El filtro no afecta a los niveles vectoriales Filter: - + Filtro: XsheetGUI::NoteArea Frame - Fotograma + fot Sec Frame - Seg. Fotograma + seg / fot 6sec Sheet - Hoja 6seg + hoja 6" 3sec Sheet - Hoja 3seg + hoja 3" @@ -10337,7 +10351,7 @@ Por favor ver la guía de usuario para obtener más detalles. Post - Enviar + Publicar Discard @@ -10348,19 +10362,19 @@ Por favor ver la guía de usuario para obtener más detalles. XsheetGUI::RowArea Onion Skin Toggle - Alternar piel de cebolla + Piel de cebolla Current Frame - Fotograma actual + Fotograma actual Relative Onion Skin Toggle - Alternar piel de cebolla relativa + Piel de cebolla relativa Fixed Onion Skin Toggle - Alternar piel de cebolla fija + Piel de cebolla fija Playback Start Marker diff --git a/toonz/sources/translations/spanish/toonzlib.ts b/toonz/sources/translations/spanish/toonzlib.ts index 04c8b4b..9657402 100644 --- a/toonz/sources/translations/spanish/toonzlib.ts +++ b/toonz/sources/translations/spanish/toonzlib.ts @@ -1,181 +1,181 @@ - + CenterlineVectorizer Can't vectorize a %1 level - No es posible vectorizar un nivel %1 + No es posible vectorizar un nivel %1 Can't vectorize a level with no frames - No es posible vectorizar un nivel sin fotogramas + No es posible vectorizar un nivel sin fotogramas Can't vectorize a %1 image - No es posible vectorizar una imagen %1 + No es posible vectorizar una imagen %1 Bad argument (%1): should be an Image or a Level - Argumento erróneo (%1): debería ser una imagen o un nivel + Argumento erróneo (%1): debería ser una imagen o un nivel FilePath "%1" - "%1" + "%1" can't concatenate an absolute path : %1 - no es posible concatenar una ruta absoluta: %1 + no es posible concatenar una ruta absoluta: %1 %1 is not a directory - %1 no es un directorio + %1 no es un directorio can't read directory %1 - No es posible leer el directorio %1 + No es posible leer el directorio %1 Image File %1 doesn't exist - El archivo %1 no existe + El archivo %1 no existe Loaded first frame of %1 - Se cargó el primer fotograma de %1 + Se cargó el primer fotograma de %1 Unexpected error while reading image - Error inesperado al leer la imagen + Error inesperado al leer la imagen Unrecognized file type : - Tipo de archivo no reconocido: + Tipo de archivo no reconocido: Can't save a %1 image to this file type : %2 - No es posible guardar una imagen %1 en este tipo de archivo: %2 + No es posible guardar una imagen %1 en este tipo de archivo: %2 Unexpected error while writing image - Error inesperado al escribir la imagen + Error inesperado al escribir la imagen ImageBuilder Bad argument (%1): should be 'Raster' or ToonzRaster' - Argumento erróneo (%1): debería ser 'Raster' o 'ToonzRaster' + Argumento erróneo (%1): debería ser 'Raster' o 'ToonzRaster' ImageBuilder(%1 image) - Constructor de imágenes(imagen %1) + Constructor de imágenes(imagen %1) %1 : %2 - %1 : %2 + %1 : %2 Bad argument (%1): should be a Transformation - Argumento erróneo (%1): debería ser una transformación + Argumento erróneo (%1): debería ser una transformación Level %1 frames - %1 fotogramas + %1 fotogramas Bad argument (%1). It should be FilePath or string - Argumento erróneo (%1). debería ser una ruta de archivo o cadena + Argumento erróneo (%1). debería ser una ruta de archivo o cadena Exception loading level (%1) - Excepción al cargar el nivel (%1) + Excepción al cargar el nivel (%1) File %1 doesn't exist - El archivo %1 no existe + El archivo %1 no existe File %1 is unsupported - El archivo %1 no es soportado + El archivo %1 no es soportado Exception reading %1 - Excepción al leer %1 + Excepción al leer %1 Can't save an empty level - No es posible guardar un nivel vacío + No es posible guardar un nivel vacío Unrecognized file type : - Tipo de archivo no reconocido: + Tipo de archivo no reconocido: Can't save a %1 level to this file type : %2 - No es posible guardar un nivel %1 en este tipo de archivo: %2 + No es posible guardar un nivel %1 en este tipo de archivo: %2 Exception writing %1 - Excepción al escribir %1 + Excepción al escribir %1 frame index (%1) must be a number - El índice de fotogramas (%1) debe ser numérico + El índice de fotogramas (%1) debe ser numérico frame index (%1) is out of range (0-%2) - el índice de fotogramas (%1) está fuera de rango (0-%2) + el índice de fotogramas (%1) está fuera de rango (0-%2) second argument (%1) is not an image - el segundo argumento (%1) no es una imagen + el segundo argumento (%1) no es una imagen can not insert a %1 image into a level - no es posible insertar una imagen %1 en un nivel + no es posible insertar una imagen %1 en un nivel can not insert a %1 image to a %2 level - no es posible insertar una imagen %1 en un nivel %2 + no es posible insertar una imagen %1 en un nivel %2 OutlineVectorizer Can't vectorize a %1 level - No es posible vectorizar un nivel %1 + No es posible vectorizar un nivel %1 Can't vectorize a level with no frames - No es posible vectorizar un nivel sin fotogramas + No es posible vectorizar un nivel sin fotogramas Can't vectorize a %1 image - No es posible vectorizar una imagen %1 + No es posible vectorizar una imagen %1 Bad argument (%1): should be an Image or a Level - Argumento erróneo (%1): debería ser una imagen o un nivel + Argumento erróneo (%1): debería ser una imagen o un nivel Invalid color : - Color inválido: + Color inválido: Preferences Retas Level Format - Formato de nivel tipo Retas + Formato de nivel Retas @@ -444,11 +444,11 @@ Move E/W - Mover E/O + Mover en X Move N/S - Mover N/S + Mover en Y Move Z @@ -456,15 +456,15 @@ Edit Stack Order - Editar orden de lista + Editar orden Edit Scale W - Editar escala O + Editar escala H Edit Scale H - Editar escala H + Editar escala V Edit Scale @@ -504,73 +504,73 @@ Set Picked Position of Style#%1 in Palette%2 : %3,%4 - + Definir posición seleccionada del estilo №%1 en la paleta%2 : %3,%4 Update Colors by Using Picked Positions in Palette %1 - + Actualizar los colores usando las posiciones seleccionadas de la paleta %1 Rasterizer Expected a vector image: %1 - Se esperaba una imagen vectorial: %1 + Se esperaba una imagen vectorial: %1 Expected a vector level: %1 - Se esperaba un nivel vectorial: %1 + Se esperaba un nivel vectorial: %1 Argument must be a vector level or image : - El argumento debe ser un nivel o imagen vectorial: + El argumento debe ser un nivel o imagen vectorial: %1 has no palette - %1 no contiene una paleta + %1 no contiene una paleta Scene File %1 doesn't exist - El archivo %1 no existe + El archivo %1 no existe Exception reading %1 - Excepción al leer %1 + Excepción al leer %1 Exception writing %1 - Excepción al escribir %1 + Excepción al escribir %1 Bad level type (%1): must be Vector,Raster or ToonzRaster - Tipo de nivel erróneo (%1): debe ser de tipo vectorial, imagen o ToonzRaster + Tipo de nivel erróneo (%1): debe ser de tipo vectorial, imagen o ToonzRaster Can't add the level: name(%1) is already used - No es posible agregar el nivel: el nombre (%1) ya se encuentra en uso + No es posible agregar el nivel: el nombre (%1) ya se encuentra en uso Can't load this kind of file as a level : %1 - No es posible cargar este tipo de archivo como un nivel: %1 + No es posible cargar este tipo de archivo como un nivel: %1 Could not load level %1 - No fue posible cargar el nivel %1 + No fue posible cargar el nivel %1 Level is not included in the scene : %1 - El nivel no se encuentra incluido en la escena: %1 + El nivel no se encuentra incluido en la escena: %1 %1 : Expected a Level instance or a level name - %1: Se esperaba una instancia de nivel o un nombre de nivel + %1: Se esperaba una instancia de nivel o un nombre de nivel Level '%1' is not included in the scene - El nivel '%1' no se encuentra incluido en la escena + El nivel '%1' no se encuentra incluido en la escena @@ -855,46 +855,46 @@ ToonzRasterConverter Can't convert a %1 level - No es posible convertir un nivel %1 + No es posible convertir un nivel %1 Can't convert a level with no frames - No es posible convertir un nivel sin fotogramas + No es posible convertir un nivel sin fotogramas Can't convert a %1 image - No es posible convertir una imagen %1 + No es posible convertir una imagen %1 Bad argument (%1): should be a raster Level or a raster Image - Argumento erróneo (%1): debería ser un nivel de imagen o una imagen + Argumento erróneo (%1): debería ser un nivel de imagen o una imagen Transform Identity - Identidad + Identidad Translation(%1,%2) - Traslación(%1, %2) + Traslación(%1, %2) Rotation(%1) - Rotación(%1) + Rotación(%1) Scale(%1%) - Escala(%1%) + Escala(%1%) Scale(%1%, %2%) - Escala(%1%, %2%) + Escala(%1%, %2%) Transform(%1, %2, %3; %4, %5, %6) - Transformación(%1, %2, %3; %4, %5, %6) + Transformación(%1, %2, %3; %4, %5, %6) diff --git a/toonz/sources/translations/spanish/toonzqt.ts b/toonz/sources/translations/spanish/toonzqt.ts index 771173e..eccca57 100644 --- a/toonz/sources/translations/spanish/toonzqt.ts +++ b/toonz/sources/translations/spanish/toonzqt.ts @@ -1,6 +1,6 @@ - + AddFxContextMenu @@ -62,27 +62,27 @@ CameraSettingsWidget Width: - Longitud: + Longitud: Height: - Altura: + Altura: XPx: - X píx: + X píx: YPx: - Y píx: + Y píx: XDpi: - X ppp: + X ppp: YDpi: - Y ppp: + Y ppp: Use Current Level Settings @@ -108,7 +108,7 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. AR: - Prop: + Prop: Add @@ -132,15 +132,15 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. DPI - + PPP Pixels - + Píxeles x - + x @@ -170,43 +170,43 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. CleanupCameraSettingsWidget Closest: - Más cercano: + Más cercano: E/W: - E/O: + X: N/S: - N/S: + Y: DPI: - PPP: + PPP: Name: - Nombre: + Nombre: Path: - Ruta: + Ruta: Field settings - Opciones de campos + Opciones de campos XPx: - Xpíx: + X píx: YPx: - Ypíx: + Y píx: Resulting Level Info - Información del nivel + Información del nivel @@ -243,11 +243,11 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. Color Threshold - Umbral de color + Umbral de color White Threshold - Umbral de blanco + Umbral de blanco H Range @@ -311,11 +311,11 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. DVGui::ProgressDialog Toonz - OpenToonz + OpenToonz OpenToonz - + OpenToonz @@ -351,27 +351,27 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. DvTextEdit Bold - Negrita + Negrita Italic - Cursiva + Cursiva Underline - Subrayado + Subrayado Align Left - Alinear a izquierda + Alinear a izquierda Align Center - Alinear al centro + Alinear al centro Align Right - Alinear a derecha + Alinear a derecha @@ -389,7 +389,7 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. FileField ... - ... + ... @@ -423,7 +423,7 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. Define Sub-camera - Definir sub-cámara + Definir región Background Colors @@ -431,7 +431,7 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. Framerate - Velocidad de fotogramas + Velocidad (fps) Playback Controls @@ -463,7 +463,7 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. &Define Sub-camera - &Definir sub-cámara + &Definir región &White Background @@ -515,7 +515,7 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. Red Channel in Grayscale - Canal rojo en escala de gris + Canal rojo en escala de grises Green Channel @@ -523,7 +523,7 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. Green Channel in Grayscale - Canal verde en escala de gris + Canal verde en escala de grises Blue Channel @@ -531,7 +531,7 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. Blue Channel in Grayscale - Canal azul en escala de gris + Canal azul en escala de grises Alpha Channel @@ -551,11 +551,11 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. Frame - Fotograma + Fotograma Set the current frame - Define el fotograma actual + Definir el fotograma actual Drag to play the animation @@ -579,15 +579,15 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. Display Areas as Filled - Mostrar áreas rellenas + Mostrar las áreas rellenas &Display Areas as Filled - Mostrar áreas &rellenas + &Mostrar las áreas rellenas &Locator - + &Localizador @@ -652,15 +652,15 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. Speed In / Speed Out Interpolation - Interpolación con desaceleración / aceleración rápida + Interpolación con aceleraciones / desaceleraciones rápidas Ease In / Ease Out Interpolation - Interpolación con desaceleración / aceleración suave + Interpolación con aceleraciones / desaceleraciones suaves Ease In / Ease Out (%) Interpolation - Interpolación con desaceleración / aceleración suave con % + Interpolación con aceleraciones / desaceleraciones suaves (%) Exponential Interpolation @@ -731,15 +731,15 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. Speed In / Speed Out - Desaceleración / aceleración rápida + Aceleración / desaceleración rápida Ease In / Ease Out - Desaceleración / aceleración suave + Aceleración / desaceleración suave Ease In / Ease Out % - Desaceleración / aceleración suave con % + Aceleración / desaceleración suave % Exponential @@ -759,7 +759,7 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. Range: - Rango: + Rango: Interpolation: @@ -767,7 +767,7 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. Step: - Intervalo: + Intervalo: Similar Shape @@ -795,7 +795,7 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. Ease% - Suave % + Suave% Expo @@ -845,11 +845,11 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. Ease In / Ease Out Interpolation - Interpolación con desaceleración / aceleración suave + Interpolación con aceleración / desaceleración suave Ease In / Ease Out (%) Interpolation - Interpolación con desaceleración / aceleración suave con % + Interpolación con aceleración / desaceleración suave (%) Expression Interpolation @@ -911,7 +911,7 @@ Es posible que el archivo de dicho ajuste se encuentre corrupto. Show Animated Only - Mostrar solo lo animado + Mostrar sólo lo animado Show All @@ -1159,26 +1159,26 @@ Seleccionar los nodos de efecto y sus vínculos relacionados antes de copiar o c LineEdit A file name cannot contains any of the following chracters: /\:*?"<>|. - El nombre de un archivo no puede contener ninguno de los siguientes caracteres: /\:*?"<>|. + El nombre de un archivo no puede contener ninguno de los siguientes caracteres: /\:*?"<>|. PageViewer Toggle Link to Studio Palette - Alternar vínculo con paleta de estudio + Alternar vínculo con paleta de estudio Remove Reference to Studio Palette - Eliminar referencia a paleta de estudio + Eliminar referencia a paleta de estudio New Style - Nuevo estilo + Nuevo estilo New Page - Nueva página + Nueva página @@ -1221,7 +1221,7 @@ Seleccionar los nodos de efecto y sus vínculos relacionados antes de copiar o c Color Model: - Modelo de color: + Modelo de color: &Palette Gizmo @@ -1253,7 +1253,7 @@ Seleccionar los nodos de efecto y sus vínculos relacionados antes de copiar o c &Small Thumbnails With Name View - Vista de miniaturas pequeñas con &nombre + Vista de miniaturas pequeñas con &nombre Lock Palette @@ -1289,11 +1289,11 @@ Seleccionar los nodos de efecto y sus vínculos relacionados antes de copiar o c Update - Actualizar + Actualizar Don't Update - No actualizar + No actualizar (Color Model: @@ -1312,7 +1312,7 @@ Seleccionar los nodos de efecto y sus vínculos relacionados antes de copiar o c Remove Links - Eliminar vínculos + Eliminar vínculos New Style @@ -1324,7 +1324,7 @@ Seleccionar los nodos de efecto y sus vínculos relacionados antes de copiar o c Name Editor - Editor de nombres + Editor de nombres @@ -1350,7 +1350,7 @@ Seleccionar los nodos de efecto y sus vínculos relacionados antes de copiar o c ParamViewer Swatch Viewer - Visor de muestras + Ver muestra @@ -1382,7 +1382,7 @@ Seleccionar los nodos de efecto y sus vínculos relacionados antes de copiar o c ProgressDialog Toonz - OpenToonz + OpenToonz @@ -1414,7 +1414,7 @@ Seleccionar los nodos de efecto y sus vínculos relacionados antes de copiar o c Delete Styles Only - Solo borrar los estilos + Sólo borrar los estilos Delete Styles, Lines and Areas @@ -1470,7 +1470,7 @@ Seleccionar los nodos de efecto y sus vínculos relacionados antes de copiar o c Fx Schematic - Diagrama de efectos + Diagrama de efectos Save Motion Path @@ -1494,7 +1494,7 @@ Seleccionar los nodos de efecto y sus vínculos relacionados antes de copiar o c There are more cut/copied styles than selected. Paste anyway (adding styles)? - Hay más estilos en el portapapeles que los seleccionados. ¿Pegar de todas formas (agregando estilos)? + Hay más estilos en el portapapeles que los seleccionados. ¿Pegar igual (agregando estilos)? Paste @@ -1507,16 +1507,16 @@ Seleccionar los nodos de efecto y sus vínculos relacionados antes de copiar o c This feature is not available in the demo version. For more information visit the %1 site: - Esta característica no está disponible en la versión de demostración. + Esta característica no está disponible en la versión de demostración. Para más información visitar el sitio %1: To request a trial license please contact - Para solicitar una licencia de prueba por favor contactarse + Para solicitar una licencia de prueba por favor contactarse For further information visit - Por más información visitar + Por más información visitar Fullpath: @@ -1632,7 +1632,7 @@ Para más información visitar el sitio %1: Endianess: - Endian: + Orden: It is not possible to delete the style # @@ -1680,7 +1680,7 @@ Para más información visitar el sitio %1: It is not possible to assing a shortcut with modifiers to the visualization commands. - No es posible asignar a los comandos de visualización un atajo de teclado que use teclas modificadoras. + No es posible asignar a los comandos de visualización un atajo de teclado que use teclas modificadoras. It is not possible to save the motion path. @@ -1692,7 +1692,7 @@ Para más información visitar el sitio %1: Toonz 7.1 - Toonz 7.1 + Toonz 7.1 The file name cannot be empty or contain any of the following characters: (new line) \ / : * ? " | @@ -1764,7 +1764,7 @@ Are you sure? Remove Link in Palette : %1 - Eliminar vínculo en paleta: %1 + Eliminar vínculo en paleta: %1 Get Color from Studio Palette @@ -1860,19 +1860,19 @@ Are you sure? OpenToonz 1.0 - OpenToonz 1.0 + OpenToonz 1.0 OpenToonz 1.1 - OpenToonz 1.1 + OpenToonz 1.1 Remove Reference in Palette : %1 - + Eliminar referencia en paleta : %1 It is not possible to assign a shortcut with modifiers to the visualization commands. - + No es posible asignar un atajo con modificadores a los comandos de visualización. @@ -1886,7 +1886,7 @@ Are you sure? RadioButtonDialog Toonz - OpenToonz + OpenToonz @@ -1929,7 +1929,7 @@ Are you sure? &Schematic Toggle - Alternar &diagrama + Alternar &diagrama &Swtich output port display mode @@ -1973,11 +1973,11 @@ Are you sure? SpeedInOutSegmentPage Speed in: - Desaceleración rápida: + Desaceleración rápida: Speed out: - Aceleración rápida: + Aceleración rápida: First Speed: @@ -2034,7 +2034,7 @@ Are you sure? StudioPaletteTreeViewer This folder is not empty. Delete anyway? - Esta carpeta no está vacía. ¿Borrarla de todas formas? + Esta carpeta no está vacía. ¿Borrarla igual? New Palette @@ -2085,19 +2085,19 @@ Are you sure? StudioPaletteViewer &New Folder - &Nueva carpeta + &Nueva carpeta &New Palette - &Nueva paleta + &Nueva paleta &Search for Palettes - &Buscar paletas + &Buscar paletas &Delete - &Borrar + &Borrar @@ -2112,11 +2112,11 @@ Are you sure? Auto - Auto + Auto Automatically update style changes - Actualiza automáticamente los cambios de estilo + Actualizar automáticamente los cambios de estilo Return To Previous Style @@ -2169,7 +2169,7 @@ Autom Matte - Mate + Opacidad RGB @@ -2240,7 +2240,7 @@ Autom ToneCurveField Channel: - Canal: + Canal: