Jump to content

Loading a icon into gmic-pdn project (Solved)


Recommended Posts

Decided to post this thread as while I did the suggestion that null54 has done, it didn't work to any avail.

 

The png file is a embedded resource.

 

It's located in here -> C:\gmic-pdn\gmic-tiled-form\src\TiledFormIcon.png

 

I tested namespace property, it didn't work.

 

I wanted to load a icon into Tiled Form project. Here's the current code:

 

Spoiler



#define USE_CLIPBOARD

using GmicSharpPdn;
using PaintDotNet;
using PaintDotNet.AppModel;
using PaintDotNet.Effects;
using PaintDotNet.IndirectUI;
using PaintDotNet.PropertySystem;
using System.Drawing;
using System.Globalization;
using System.Reflection;
using System.Collections.Generic;

#if USE_CLIPBOARD
using PaintDotNet.Clipboard;
#endif

namespace Tiled_Form
{
    [PluginSupportInfo(typeof(PluginSupportInfo))]
    public sealed class TiledFormGmicPdnPlugin : PropertyBasedEffect
    {

        public TiledFormGmicPdnPlugin()
            : base("Tiled Form", new Bitmap(typeof(TiledFormGmicPdnPlugin),"TiledFormIcon.png"), SubmenuNames.Stylize, new EffectOptions { Flags = EffectFlags.Configurable })
        {
        }

        private enum PropertyNames
        {
            Cs_mode,
            Pretile_mode,
            Use_clipboard_as_tile,
            Shape_w,
            Shape_h,
            Shape_ratio,
            Shape_ang,
            Shape_axis,
            Sub,
            Zconv_Factor,
            Zconv_Boundary,
            Interp,
            Tile_b,
            Preprocess,
            Fit_tile,
            Points,
            Thickness
        }

        public enum Cs_modeOptions
        {
            Cs_modeOption1,
            Cs_modeOption2,
            Cs_modeOption3,
            Cs_modeOption4,
            Cs_modeOption5,
            Cs_modeOption6,
            Cs_modeOption7,
            Cs_modeOption8,
            Cs_modeOption9
        }

        public enum Pretile_modeOptions
        {
            Pretile_modeOption1,
            Pretile_modeOption2,
            Pretile_modeOption3,
            Pretile_modeOption4,
            Pretile_modeOption5,
            Pretile_modeOption6,
            Pretile_modeOption7,
            Pretile_modeOption8,
            Pretile_modeOption9,
            Pretile_modeOption10,
            Pretile_modeOption11,
            Pretile_modeOption12,
            Pretile_modeOption13,
            Pretile_modeOption14,
            Pretile_modeOption15,
            Pretile_modeOption16,
            Pretile_modeOption17,
            Pretile_modeOption18,
            Pretile_modeOption19,
            Pretile_modeOption20,
            Pretile_modeOption21,
            Pretile_modeOption22
        }

        public enum Shape_axisOptions
        {
            Shape_axisOption1,
            Shape_axisOption2,
            Shape_axisOption3
        }

        public enum Zconv_BoundaryOptions
        {
            Zconv_BoundaryOption1,
            Zconv_BoundaryOption2,
        }

        public enum InterpOptions
        {
            InterpOption1,
            InterpOption2,
            InterpOption3,
            InterpOption4,
            InterpOption5
        }

        public enum Tile_bOptions
        {
            Tile_bOption1,
            Tile_bOption2,
            Tile_bOption3,
            Tile_bOption4
        }

        public enum PreprocessOptions
        {
            PreprocessOption1,
            PreprocessOption2,
            PreprocessOption3
        }

        protected override PropertyCollection OnCreatePropertyCollection()
        {
            Property[] props = new Property[]
            {
                StaticListChoiceProperty.CreateForEnum<Cs_modeOptions>(PropertyNames.Cs_mode,(Cs_modeOptions)7,false),
                StaticListChoiceProperty.CreateForEnum<Pretile_modeOptions>(PropertyNames.Pretile_mode,(Pretile_modeOptions)5,false),
                new BooleanProperty(PropertyNames.Use_clipboard_as_tile, false),
                new Int32Property(PropertyNames.Shape_w, 30, 0, 512),
                new Int32Property(PropertyNames.Shape_h, 30, 0, 512),
                new DoubleProperty(PropertyNames.Shape_ratio, 100, .1, 100),
                new DoubleProperty(PropertyNames.Shape_ang, 0, -180, 180),
                StaticListChoiceProperty.CreateForEnum<Shape_axisOptions>(PropertyNames.Shape_axis,0,false),
                new DoubleProperty(PropertyNames.Sub, 1, .5, 2),
                new DoubleProperty(PropertyNames.Zconv_Factor, 75, 0, 200),
                StaticListChoiceProperty.CreateForEnum<Zconv_BoundaryOptions>(PropertyNames.Zconv_Boundary,0,false),
                StaticListChoiceProperty.CreateForEnum<InterpOptions>(PropertyNames.Interp,(InterpOptions)4,false),
                StaticListChoiceProperty.CreateForEnum<Tile_bOptions>(PropertyNames.Tile_b,0,false),
                StaticListChoiceProperty.CreateForEnum<PreprocessOptions>(PropertyNames.Preprocess,0,false),
                new BooleanProperty(PropertyNames.Fit_tile, true),
                new Int32Property(PropertyNames.Points, 5, 1, 100),
                new DoubleProperty(PropertyNames.Thickness, 38, .1, 100)
            };

            List<PropertyCollectionRule> propRules = new List<PropertyCollectionRule>();

            propRules.Add(new ReadOnlyBoundToValueRule<object, StaticListChoiceProperty>(PropertyNames.Thickness, PropertyNames.Pretile_mode, Pretile_modeOptions.Pretile_modeOption22, true));
            propRules.Add(new ReadOnlyBoundToBooleanRule(PropertyNames.Thickness, PropertyNames.Use_clipboard_as_tile, false));
            propRules.Add(new ReadOnlyBoundToBooleanRule(PropertyNames.Pretile_mode, PropertyNames.Use_clipboard_as_tile, false));
            propRules.Add(new ReadOnlyBoundToValueRule<object, StaticListChoiceProperty>(PropertyNames.Points, PropertyNames.Pretile_mode, new object[] { Pretile_modeOptions.Pretile_modeOption18, Pretile_modeOptions.Pretile_modeOption21, Pretile_modeOptions.Pretile_modeOption22 }, true));
            propRules.Add(new ReadOnlyBoundToBooleanRule(PropertyNames.Points, PropertyNames.Use_clipboard_as_tile, false));
            propRules.Add(new ReadOnlyBoundToValueRule<double, DoubleProperty>(PropertyNames.Zconv_Boundary, PropertyNames.Zconv_Factor, new[] { 0d }, false));

            return new PropertyCollection(props, propRules);
        }

        protected override ControlInfo OnCreateConfigUI(PropertyCollection props)
        {
            ControlInfo configUI = CreateDefaultConfigUI(props);
            configUI.SetPropertyControlValue(PropertyNames.Cs_mode, ControlInfoPropertyNames.DisplayName, "Color Space");
            PropertyControlInfo Cs_modeControl = configUI.FindControlForPropertyName(PropertyNames.Cs_mode);
            Cs_modeControl.SetValueDisplayName(Cs_modeOptions.Cs_modeOption1, "RGB");
            Cs_modeControl.SetValueDisplayName(Cs_modeOptions.Cs_modeOption2, "RYB");
            Cs_modeControl.SetValueDisplayName(Cs_modeOptions.Cs_modeOption3, "CMYK");
            Cs_modeControl.SetValueDisplayName(Cs_modeOptions.Cs_modeOption4, "HCY");
            Cs_modeControl.SetValueDisplayName(Cs_modeOptions.Cs_modeOption5, "HSI");
            Cs_modeControl.SetValueDisplayName(Cs_modeOptions.Cs_modeOption6, "HSL");
            Cs_modeControl.SetValueDisplayName(Cs_modeOptions.Cs_modeOption7, "HSV");
            Cs_modeControl.SetValueDisplayName(Cs_modeOptions.Cs_modeOption8, "LAB");
            Cs_modeControl.SetValueDisplayName(Cs_modeOptions.Cs_modeOption9, "LCH");
            configUI.SetPropertyControlValue(PropertyNames.Pretile_mode, ControlInfoPropertyNames.DisplayName, "Tiled Form");
            PropertyControlInfo Pretile_modeControl = configUI.FindControlForPropertyName(PropertyNames.Pretile_mode);
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption1, "Australia");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption2, "Barbed Wire");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption3, "Circle");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption4, "Crosshair");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption5, "Cupid");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption6, "Diamond");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption7, "Dragonfly");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption8, "Flip");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption9, "Gumleaf");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption10, "Heart");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption11, "Information");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption12, "Kookaburra");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption13, "Mail");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption14, "Mapleleaf");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption15, "Paint Splat");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption16, "Paw");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption17, "Phone");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption18, "Polygon (Dynamic)");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption19, "Rooster");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption20, "Shopping Cart");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption21, "Snowflake (Dynamic)");
            Pretile_modeControl.SetValueDisplayName(Pretile_modeOptions.Pretile_modeOption22, "Star (Dynamic)");
            configUI.SetPropertyControlValue(PropertyNames.Use_clipboard_as_tile, ControlInfoPropertyNames.DisplayName, string.Empty);
            configUI.SetPropertyControlValue(PropertyNames.Use_clipboard_as_tile, ControlInfoPropertyNames.Description, "Use Clipboard as Tile?");
            configUI.SetPropertyControlValue(PropertyNames.Shape_w, ControlInfoPropertyNames.DisplayName, "Shape Width");
            configUI.SetPropertyControlValue(PropertyNames.Shape_h, ControlInfoPropertyNames.DisplayName, "Shape Height");
            configUI.SetPropertyControlValue(PropertyNames.Shape_ratio, ControlInfoPropertyNames.DisplayName, "Shape Ratio (%)");
            configUI.SetPropertyControlValue(PropertyNames.Shape_ratio, ControlInfoPropertyNames.SliderLargeChange, 0.25);
            configUI.SetPropertyControlValue(PropertyNames.Shape_ratio, ControlInfoPropertyNames.SliderSmallChange, 0.05);
            configUI.SetPropertyControlValue(PropertyNames.Shape_ratio, ControlInfoPropertyNames.UpDownIncrement, 0.01);
            configUI.SetPropertyControlValue(PropertyNames.Shape_ratio, ControlInfoPropertyNames.DecimalPlaces, 3);
            configUI.SetPropertyControlValue(PropertyNames.Shape_ang, ControlInfoPropertyNames.DisplayName, "Shape Rotation");
            configUI.SetPropertyControlType(PropertyNames.Shape_ang, PropertyControlType.AngleChooser);
            configUI.SetPropertyControlValue(PropertyNames.Shape_ang, ControlInfoPropertyNames.DecimalPlaces, 3);
            configUI.SetPropertyControlValue(PropertyNames.Shape_axis, ControlInfoPropertyNames.DisplayName, "Shape Mirror Axis");
            PropertyControlInfo Shape_axisControl = configUI.FindControlForPropertyName(PropertyNames.Shape_axis);
            Shape_axisControl.SetValueDisplayName(Shape_axisOptions.Shape_axisOption1, "None");
            Shape_axisControl.SetValueDisplayName(Shape_axisOptions.Shape_axisOption2, "X");
            Shape_axisControl.SetValueDisplayName(Shape_axisOptions.Shape_axisOption3, "Y");
            configUI.SetPropertyControlValue(PropertyNames.Sub, ControlInfoPropertyNames.DisplayName, "Subpixel Level");
            configUI.SetPropertyControlValue(PropertyNames.Sub, ControlInfoPropertyNames.SliderLargeChange, 0.25);
            configUI.SetPropertyControlValue(PropertyNames.Sub, ControlInfoPropertyNames.SliderSmallChange, 0.05);
            configUI.SetPropertyControlValue(PropertyNames.Sub, ControlInfoPropertyNames.UpDownIncrement, 0.01);
            configUI.SetPropertyControlValue(PropertyNames.Sub, ControlInfoPropertyNames.DecimalPlaces, 3);
            configUI.SetPropertyControlValue(PropertyNames.Zconv_Factor, ControlInfoPropertyNames.DisplayName, "Z-Convolution Factor (%)");
            configUI.SetPropertyControlValue(PropertyNames.Zconv_Factor, ControlInfoPropertyNames.SliderLargeChange, 0.25);
            configUI.SetPropertyControlValue(PropertyNames.Zconv_Factor, ControlInfoPropertyNames.SliderSmallChange, 0.05);
            configUI.SetPropertyControlValue(PropertyNames.Zconv_Factor, ControlInfoPropertyNames.UpDownIncrement, 0.01);
            configUI.SetPropertyControlValue(PropertyNames.Zconv_Factor, ControlInfoPropertyNames.DecimalPlaces, 3);
            configUI.SetPropertyControlValue(PropertyNames.Zconv_Boundary, ControlInfoPropertyNames.DisplayName, "Z-Convolution Boundary");
            PropertyControlInfo Zconv_BoundaryControl = configUI.FindControlForPropertyName(PropertyNames.Zconv_Boundary);
            Zconv_BoundaryControl.SetValueDisplayName(Zconv_BoundaryOptions.Zconv_BoundaryOption1, "Neumann");
            Zconv_BoundaryControl.SetValueDisplayName(Zconv_BoundaryOptions.Zconv_BoundaryOption2, "Periodic");
            configUI.SetPropertyControlValue(PropertyNames.Interp, ControlInfoPropertyNames.DisplayName, "Interpolation");
            PropertyControlInfo InterpControl = configUI.FindControlForPropertyName(PropertyNames.Interp);
            InterpControl.SetValueDisplayName(InterpOptions.InterpOption1, "Nearest");
            InterpControl.SetValueDisplayName(InterpOptions.InterpOption2, "Average");
            InterpControl.SetValueDisplayName(InterpOptions.InterpOption3, "Linear");
            InterpControl.SetValueDisplayName(InterpOptions.InterpOption4, "Bicubic");
            InterpControl.SetValueDisplayName(InterpOptions.InterpOption5, "Lanczos");
            configUI.SetPropertyControlValue(PropertyNames.Tile_b, ControlInfoPropertyNames.DisplayName, "Tile Boundary");
            PropertyControlInfo Tile_bControl = configUI.FindControlForPropertyName(PropertyNames.Tile_b);
            Tile_bControl.SetValueDisplayName(Tile_bOptions.Tile_bOption1, "Periodic");
            Tile_bControl.SetValueDisplayName(Tile_bOptions.Tile_bOption2, "Mirror X");
            Tile_bControl.SetValueDisplayName(Tile_bOptions.Tile_bOption3, "Mirror Y");
            Tile_bControl.SetValueDisplayName(Tile_bOptions.Tile_bOption4, "Mirror XY");
            configUI.SetPropertyControlValue(PropertyNames.Preprocess, ControlInfoPropertyNames.DisplayName, "Preprocess");
            PropertyControlInfo PreprocessControl = configUI.FindControlForPropertyName(PropertyNames.Preprocess);
            PreprocessControl.SetValueDisplayName(PreprocessOptions.PreprocessOption1, "Neumann");
            PreprocessControl.SetValueDisplayName(PreprocessOptions.PreprocessOption2, "Periodic");
            PreprocessControl.SetValueDisplayName(PreprocessOptions.PreprocessOption3, "Mirror");
            configUI.SetPropertyControlValue(PropertyNames.Fit_tile, ControlInfoPropertyNames.DisplayName, string.Empty);
            configUI.SetPropertyControlValue(PropertyNames.Fit_tile, ControlInfoPropertyNames.Description, "Fit Tile");
            configUI.SetPropertyControlValue(PropertyNames.Points, ControlInfoPropertyNames.DisplayName, "Points/Iteration");
            configUI.SetPropertyControlValue(PropertyNames.Thickness, ControlInfoPropertyNames.DisplayName, "Thickness (%)");
            configUI.SetPropertyControlValue(PropertyNames.Thickness, ControlInfoPropertyNames.SliderLargeChange, 0.25);
            configUI.SetPropertyControlValue(PropertyNames.Thickness, ControlInfoPropertyNames.SliderSmallChange, 0.05);
            configUI.SetPropertyControlValue(PropertyNames.Thickness, ControlInfoPropertyNames.UpDownIncrement, 0.01);
            configUI.SetPropertyControlValue(PropertyNames.Thickness, ControlInfoPropertyNames.DecimalPlaces, 3);

            return configUI;
        }

        protected override void OnCustomizeConfigUIWindowProperties(PropertyCollection props)
        {
            // Add help button to effect UI
            props[ControlInfoPropertyNames.WindowTitle].Value = "Tiled Form - G'MIC-QT";
            props[ControlInfoPropertyNames.WindowHelpContentType].Value = WindowHelpContentType.PlainText;

            Assembly assembly = typeof(TiledFormGmicPdnPlugin).Assembly;

            string fileVersion = assembly.GetCustomAttribute<AssemblyFileVersionAttribute>().Version;
            string copyright = assembly.GetCustomAttribute<AssemblyCopyrightAttribute>().Copyright;

            props[ControlInfoPropertyNames.WindowHelpContent].Value = $"Tiled_Form v{ fileVersion }\n\n{ copyright }\nAll rights reserved.";

            base.OnCustomizeConfigUIWindowProperties(props);
        }

        protected override void OnSetRenderInfo(PropertyBasedEffectConfigToken newToken, RenderArgs dstArgs, RenderArgs srcArgs)
        {
            int color_space_id = (byte)(int)newToken.GetProperty<StaticListChoiceProperty>(PropertyNames.Cs_mode).Value;
            int tile_id = (byte)(int)newToken.GetProperty<StaticListChoiceProperty>(PropertyNames.Pretile_mode).Value;
            bool bool_use_clipboard = newToken.GetProperty<BooleanProperty>(PropertyNames.Use_clipboard_as_tile).Value; int use_clipboard;
            int tile_w = newToken.GetProperty<Int32Property>(PropertyNames.Shape_w).Value;
            int tile_h = newToken.GetProperty<Int32Property>(PropertyNames.Shape_h).Value;
            double ratio = newToken.GetProperty<DoubleProperty>(PropertyNames.Shape_ratio).Value / 100;
            double rotation = newToken.GetProperty<DoubleProperty>(PropertyNames.Shape_ang).Value * -1;
            int shape_mirror_axis_mode = (byte)(int)newToken.GetProperty<StaticListChoiceProperty>(PropertyNames.Shape_axis).Value;
            double subpixel_process = newToken.GetProperty<DoubleProperty>(PropertyNames.Sub).Value + 1;
            double zconvf = newToken.GetProperty<DoubleProperty>(PropertyNames.Zconv_Factor).Value / 100;
            int zconvb = (byte)(int)newToken.GetProperty<StaticListChoiceProperty>(PropertyNames.Zconv_Boundary).Value + 1;
            int interp = (byte)(int)newToken.GetProperty<StaticListChoiceProperty>(PropertyNames.Interp).Value + 1;
            int tile_bound_id = (byte)(int)newToken.GetProperty<StaticListChoiceProperty>(PropertyNames.Tile_b).Value;
            int preprocess_id = (byte)(int)newToken.GetProperty<StaticListChoiceProperty>(PropertyNames.Preprocess).Value + 1;
            bool bool_ftmode = newToken.GetProperty<BooleanProperty>(PropertyNames.Fit_tile).Value; int ftmode;
            int refpts = newToken.GetProperty<Int32Property>(PropertyNames.Points).Value; int pts = refpts;
            double thickness = newToken.GetProperty<DoubleProperty>(PropertyNames.Thickness).Value / 100;

            //This is required to assign exclusively numbers for g'mic processing.
            if (bool_use_clipboard) { use_clipboard = 1; } else { use_clipboard = 0; }
            if (bool_ftmode) { ftmode = 1; } else { ftmode = 0; }

            string[] shapes = new string[] { "australia", "barbedwire", "circle", "crosshair", "cupid", "diamond", "dragonfly", "flip", "gumleaf", "heart", "information", "kookaburra", "mail", "mapleleaf", "paintsplat", "paw", "phone", "polygon", "rooster", "shopping_cart", "snowflake", "star" };
            string gmic_pdn_shape = "gmic_pdn_shape_";
            gmic_pdn_shape += shapes[tile_id];

            using (PdnGmicSharp gmic = new PdnGmicSharp())
            {
                // Add the source surface as the first input image.
                using (PdnGmicBitmap source = new PdnGmicBitmap(srcArgs.Surface))
                {
                    gmic.AddInputImage(source);
                }

                // The following code demonstrates adding an image
                // from the clipboard as a second G'MIC surface.
#if USE_CLIPBOARD
                IClipboardService clipboard = this.Services.GetService<IClipboardService>();

                Surface clipboardSurface = clipboard.TryGetSurface();

                try
                {
                    if (clipboardSurface != null)
                    {
                        using (PdnGmicBitmap clipboardBitmap = new PdnGmicBitmap(clipboardSurface, true))
                        {
                            // The PdnGmicBitmap takes ownership of the clipboard surface.
                            clipboardSurface = null;

                            gmic.AddInputImage(clipboardBitmap);
                        }
                    }
                }
                finally
                {
                    clipboardSurface?.Dispose();
                }
#endif
                if (tile_id == 20)
                {
                    if (refpts > 6) { pts = 6; }
                }

                if (tile_id == 21 || tile_id == 17)
                {
                    if (refpts < 3) { pts = 3; }
                }


                if (tile_w > 0 && tile_w < 4) { tile_w = 4; }
                if (tile_h > 0 && tile_h < 4) { tile_h = 4; }

                string command = string.Format(CultureInfo.InvariantCulture,
                                               "end_image_list_id={{$!-1}}\n" +
                                               "cs_conv={{s#0>=3}}\n" +
                                               "tvv=0\n" +
                                               "repeat s#0\n" +
                                               " sh[0] $>\n" +
                                               " tvv+={{iv#-1}}\n" +
                                               " rm.\n" +
                                               "done\n" +
                                               "if !$tvv return fi\n" +
                                               "m \"gmic_pdn_shape_circle: shape_circle $\"\"1\"\n" +
                                               "m \"gmic_pdn_shape_cupid: shape_cupid $\"\"1\"\n" +
                                               "m \"gmic_pdn_shape_diamond: shape_diamond $\"\"1\"\n" +
                                               "m \"gmic_pdn_shape_polygon: shape_polygon $\"\"1,$\"\"2\"\n" +
                                               "m \"gmic_pdn_shape_snowflake: shape_snowflake $\"\"1,$\"\"2\"\n" +
                                               "m \"gmic_pdn_shape_star: shape_star $\"\"1,$\"\"2,$\"\"3\"\n" +
                                               "m \"gmic_pdn_shape_heart: shape_heart $\"\"1\"\n" +
                                               "m \"gmic_pdn_shape_australia: base642img \"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\" decompress_rle. r. $\"\"1,$\"\"1,1,1,5 if $\"\"1>512 b. 0.2% fi >=. 40%\"\n" +
                                               "m \"gmic_pdn_shape_barbedwire: base642img \"MiBpbnQgbGl0dGxlX2VuZGlhbgoxIDY5MSAxIDEgIzk3Mwp4nI2WSWyNURTHP1qvqvpqnh4RNSwIQWtKDAlaNbQUbdASG0QsEGJhQSIRK0OCDZFgIRYskEhEQsJWYowhhmpLa54aauh71//k+33ezUuFxcsv95xz7z3n3P+93ws6BkGgX4cg/AUwWZtyWWJWyv1htpgNbdxJ7CTGxJiYA2MeG5xztt4w/C9duF4JbMTe5MJ1S2Fkb2Zc4tk7i69cuP8c2ED8a88ey7DbuMyz2zpviC+DdeTdxn6fsc9lXh3rJf/hTzH+kuF/xvqZ/nkunPc//jh288+HT2TPz7Bb/FPZu5Kn2Rdgz4yP7I+Jb8+eJ34in7/Zy7E/kr3Lf9grXHgOzejqJ7oQXK74kbgqaHab/9o7pzhxtv5ysYedK+dg8d09f43YW3wrf1/xPfZasY/4TvYB4gfqXyn2t3GG/ZwL5zcyr9XhV1yCcTb5WfwN8v4qDqP+GejYrmBCHCN+d2n9GG+K3dDbaPpTgp5t/RHiJPEH/XL0846417sPI8XprGP9uSfu9/xjxRrxgXjAuy9n4AFxtZ2feJB7Y/bzYk/xuVho+hTXmi7EI9RpdVwUB6LDyfRxg+lTPEFfLO9L4lDqLxN/iVuD8B05zdjiLovvyXMQ9tFwGXVaP66Ih1lvFfsPRN+FjJd48Vep385vdxC+SwWc80LO0+Ku0b8WcZd4QZxI/3t6cdfFQ9S3Qzwrjucc4+RrcXdd+E620DfTwXbxNP1KUncUf5++Wp7HsW8TT6Krn8Q1efO6oJNT5LlFPCZO9eKb0bvlP4q8Z8Ey5pWLR5kX6c7OIUGfh7NOMdwnHhGnUZfFv2W+1TFEfEgfD7UTZ/reJW4U91CP5THY03Mr8e/Yd7u4Rtzp0u9KIki/a9/oh93/ceJmcYW4ibh6/J/xr6fudfTH9J5Hn+x8VotzPH+dOFOsFvsR15V87b1Yi910PVtc7MJ3yfz5GXG59DWffs4VK8VexMXxx+mL6WINbCPPJs5vkafPuLdu9N5Uu/T32I9PuvR72g3avCov3uqv4Dwy41PUX0X/X3rx0fcu15uX5N5F86K8bF5pEH7fOqKTLPQdzYvD9uZNYb9f5N/GOVd5cTH0Xkx8jnc/WhkvJc7e2SJv3e/os4S42+gnWieaH/lvsc80xt9Yp5R1XojVQfp72+LS/5NsbO/SMvpo4wmefTnnZ+NiF77z9ei80rNnodcadGj7F4i11JnDeDDnmeCexb2+FaDnVvTfwH5R/+27av4ixvb97eONX6VCnRVRd1Mq/G5H/kb+90T+ev5HjCH/vMqU+w2wUyNRMSAxNSAxIDEgIzM4Cnicc2dgYPAF4igGCCgB4nwkWg+Ik4E4E4hzgTgdiKugagGdcAT9\" decompress_rle. r. $\"\"1,$\"\"1,1,1,5 if $\"\"1>512 b. 0.2% fi >=. 40%\"\n" +
                                               "m \"gmic_pdn_shape_crosshair: base642img \"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\" decompress_rle. r. $\"\"1,$\"\"1,1,1,5 if $\"\"1>512 b. 0.2% fi >=. 40%\"\n" +
                                               "m \"gmic_pdn_shape_dragonfly: base642img \"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\" decompress_rle. r. $\"\"1,$\"\"1,1,1,5 if $\"\"1>512 b. 0.2% fi >=. 40%\"\n" +
                                               "m \"gmic_pdn_shape_flip: base642img \"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\" decompress_rle. r. $\"\"1,$\"\"1,1,1,5 if $\"\"1>512 b. 0.2% fi >=. 40%\"\n" +
                                               "m \"gmic_pdn_shape_gumleaf: base642img \"MiBzaG9ydCBsaXR0bGVfZW5kaWFuCjEgOTY5IDEgMSAjNTk2CnichdXnVuMwEAXgiUMNvXdC76GFQICE3kkoSahPuu+xr7HPcM/OjGxFArP74zszNgdbVqQrCihIUIKIdf7mCiOBgEXVCJAM1fukrQ3au7UBjczURjQxU5tUs63NaKEW1UqtzNQUpdBGbWindtVBHaqTOtHFTO1S3dSNHupRvdSr+lSf6qd+DNCAGqRBDNGQGlbDaoRGMEqjaozGME7jzNQJmlCTNKnSlGZRTWOKptR0WE0/bc3QjDVLs9YczVnzNG8teP2CWqRFa4mWPMu07FmhlVirtIa1/8hQxrGO9R9s0EZoE5sxtmgrtI3tGFnKsh3sxMjRLna/2cNerDzynn3sf3OAg28OcRgqUIEVUfQc4chzjGPrBCfWKU6tM5xZ5zi3LnBhXeJSXeGKXdM1u8GN5xa3se5w96N73LOv993/c5914/X1d/9rLPFj88fwdTxGCSVVtrWsHvBgPXr9o+cJT+rZ1mergoqqosrc3lzX+yrVUFMveFGveA3V+ze8We94tz7wYX16/WfI7b9e+33ccz7sO6J3umOIxhSNsT5u8y3ud9XC76x6c1KxcxXN3VM4r4/O3Jftb1TS381dU9EauOZ1K2tY1rOsb1nvsv5lP0R7RPZMUfdVQfdYtO9kP+Z530b7Okc53fNZzgTJC8kOyRXJmAznkeSWZJrknGSfZKHkpeSn5KlkrWSw5LNktWS3ZLnk+yCT7JfzoIvPCDk/UnymtPD5ImdPA59HST6fjCSfa4Z77fdJPft+vh+Ez3BrwOdoEPN39370jF9//gJSgJz1MSAxNSAxIDEgIzMzCnicc2fwZYhiYGAoYcgHYz2GZIZMhlyGdIYqoCgATrgE/Q==\" decompress_rle. r. $\"\"1,$\"\"1,1,1,5 if $\"\"1>512 b. 0.2% fi >=. 40%\"\n" +
                                               "m \"gmic_pdn_shape_information: base642img \"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\" decompress_rle. r. $\"\"1,$\"\"1,1,1,5 if $\"\"1>512 b. 0.2% fi >=. 40%\"\n" +
                                               "m \"gmic_pdn_shape_kookaburra: base642img \"MiBzaG9ydCBsaXR0bGVfZW5kaWFuCjEgOTU5IDEgMSAjMTEwNwp4nI2VeWyVRRTFz3TfH6Eo7qLFSDSKgFBKSyGARSgICCggdYni0gaDiSHRhESjiYZocMEqFCioiNWispQlRNPUQsUCLbZQS21tKd33je7net+88nwvmugfv5z55r2Z755778wHH/gYGEDpTXVgHO/DJE7BNEZjOVdgHQ36JAnJTMEGvoKN3IjX+Do2cRPe4Jt4i2/jHb6LzdyM9/g+tnALPuCH+Jhb8QlT8Rm3YTu3I82Shh3cgZ2WnZZdll1IZzp2cw/2KJ/zC3zJvdirfMV92MevkcEM5Rt8y0xkcj/28zt8zwM4wIM4xEPKYRweIYtZyhEcsRzFMR5TjuMET+BH/oRsZiOHOcjlSeQxD6d5GvnMxzkW4jcW4QIv4neWooxlqGAFKlmJy7yMGtaino1oZiva2YFu9qCXfRjgIEgCYoyv+Bp/8TeBEmRCJMSESbhxiMOMktEmUpZgQLJxvSSiS/UGSUCz1XjUSA4i5X6UqYbLTTgnP2uMuTbGXJ7CKY0zT+P8VePM51mNtQAFPG/jLeIFG3OJxlzKSxp3Oco17gqNu5JVGns1qllj469lvXpoQAOb0MRm9dKCFrahje3WUwe70MVu662HvdZfH/st/epzkEMY4jCG1S8pFqExRnyMj3r3FT/jp/79JdAEKM48BEmwCdZchEioCZUwmxMn4RKheI4jTIRbHR5j77n/r97rw+17wkfeH+bW0JG4nOqKMdTWLtgS7NYg9eLy41SnvwD1GTCi/urbz9bfx+bCR3NiDARGbJ6oORvW3A1ZBjWXAxzQnDpz26d57sVVzXm35r5La9DJTkuH1qTd0q41akOrrZVLW7UPWywtto7NWs8mS5NbGy2NWu8GW/d6rX+dpU57oW5Ea21v1GiPXLFcsVRbqm3/VGkflWtflfEPey4uaZ85z0gJS3BRe69Ye7CYxdqLRTivfVloKdQeLcBZ7dczPKN968CwHNfzFoZ+OaoagquShV8YrOfhoPZ3INrlB5ykH5okU/veF/WSYe+CdO7WeyLd4rw30vQOcd4n2/gqKOPxKTdgUKKQypd17ztV16NX7tD59eiRcaop6JTb9T5K0XfcppqMVrlV1yfrGbxF9SU0ys16V72IOrlRn1/QMzlW//c8quU61XWokjG6z3P4U0br/s+iXBzYymdQKmFWSyQYH/FpPMUnkcQkrOVaPME1WKOs5mqs4io8zsewkiuxQu/W5XwUy7gMS7kUS/gIFnMxFnEREpmIhVyIBVygPIz5nI8EJuAhZR7nYS7nYo5lDmZzNmZZZiGe8ZipuHSme+w97/otjnGIVVwaa8feGosZbp2BGMWlMXbs0hhMd+v0/xx7rru2n+feLmK9xrHuZ++x99y/6z89xXn87unfqa6c/K3X1nh6jUa0Mo1TMdXyIKbot9LJZE62TOIDmMiJuJf3YAIn4G7ehfGMQhTHQiRIv69jEMlRiGAossr/As3XmqgxIDI2IDEgMSAjNTMKeJxzZ/BliGJgYIhmMGJIYVBgyGbIB8JshkSGJIZShiIgTASKFjNkAOkChlSGWKBaAORKCL8=\" decompress_rle. r. $\"\"1,$\"\"1,1,1,5 if $\"\"1>512 b. 0.2% fi >=. 40%\"\n" +
                                               "m \"gmic_pdn_shape_mail: base642img \"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\" decompress_rle. r. $\"\"1,$\"\"1,1,1,5 if $\"\"1>512 b. 0.2% fi >=. 40%\"\n" +
                                               "m \"gmic_pdn_shape_mapleleaf: base642img \"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\" decompress_rle. r. $\"\"1,$\"\"1,1,1,5 if $\"\"1>512 b. 0.2% fi >=. 40%\"\n" +
                                               "m \"gmic_pdn_shape_paintsplat: base642img \"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\" decompress_rle. r. $\"\"1,$\"\"1,1,1,5 if $\"\"1>512 b. 0.2% fi >=. 40%\"\n" +
                                               "m \"gmic_pdn_shape_paw: base642img \"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\" decompress_rle. r. $\"\"1,$\"\"1,1,1,5 if $\"\"1>512 b. 0.2% fi >=. 40%\"\n" +
                                               "m \"gmic_pdn_shape_phone: base642img \"MiBzaG9ydCBsaXR0bGVfZW5kaWFuCjEgMTU2OSAxIDEgIzEzMzEKeJytl2tQVVUYhj80R9IkTTLUFBUGJURB7sjtYDlZWWlmgefA4S5qkvcbXiC72G0q07KypKvTWDaWZXkp85aXQGH60dTUTDP96ddm/P/t3u8954gcjjPW+GPNs58FrL332mut90P6Sb8oiRJBm3l5sMToMInVERKno+ROHSPxOl4SNFGSdKIka7Kk6GSZolMlXdMlU7MkR3MkT/OlQAukSIvFox60UilFC+dcjRLH9cg8vUm63VKZrwPoj+lAeplG08t1EN2rg+k+HUKv1Bi6X4fSq0DzajyzA6/V4eyv01h6A96jO0jzRo2jL9KR9CU6mm40X4r3NW/SsRy3SePpy3QcfblOoK8AzVdiXsxXgearNYm+BjRfq5Po6zFvIdp9mjWFbjTfpKl0o/kWzG93kOYtmkZvxZzbuK06jb5VM+hbNZP+NGj+jGbTnwXNn9Nc+jbQfJvm0V/AdzMPsFRe1Onsfwnf0vxlLaQbzV/B9+0O0vxVLaEbzbfjG3cHaeNu1xn0HXo3fYfeQ98Jmu/UmfQ3QPM39V76LtB8l86ivxXk23of7/OO3k83mu/WB+hG83d1Nv09fZC+Rx+iG23cPfowvQ00b9M59PdB8w/0EXiA5h/qPLrRcUvAR+G96bjF4Hx4gI5bJB/p4/AAHbcQLIMH6LgFYDl8On6/HJ4PLoAH6Li5uL8XHqDjZuP5fPAsPK8PnglWwDPwPhXwdLxvJTwN718Jn4L5ME7GvPnRn4J59MMnYZ6r4EmY/yp4gryu1fDx8hrouGPxfWvgo7EOauBxWB+18BFYN7Xw4VhXdfBhWG918Bh5Suvht2Cd1sNvls3aAB8oG0HH7Y91vxAehf2wUBZqI/ZhqC3CXuxpjfx5A/ZrvdSz1WEv12JfW6uRGrZq7PsqND/OgVCrxNnQ0yowP76IzSsLMLfhrRzzH97K8I0CLVJfT39kv/pvQtehe11939C1F2ed9wq9eNYQfbwOPX/FFVbwOsBAq+zDwFyE5sV/hX5e96Yfc9qbkfp6WMXr6+N/+d1rj1Edxhs55o0aqxpZFGCbGy1nsV4/dofKBfheN1ba4fvckdIB7nfHyCWs6wPuOPIg9mEn1vsh7EvjYTdZurAHjmHfdoLHsZ+7sDdOYp8bz2Dfd2G/nHdzyHY3D1wknThXjL/g3OnSJfIrzi3jbzjfunSp/E42yR/kMvmTXCF/kWvkb3KD/EO28vzrBO187NSW/+ktPIeN1n9Jt1yXG6/tHrkY9Iu6OaJ3gJG8Qzf1cWO7buR9wt0YyX/W5gjuwfdupl/APEby86D5eV0f0c+B5ud0XdDX8T5G6z+ra+lG85/w3SK50fyMrqYbzU/rKo57OsxPgeandCX9JGh+EuvD/ARofkKX93Hjj1hPTpDmx/VJutH8B6w7J0jz77EenSDNj+kTHPcoaH4U69b8CGh+RBfTD4Pmh7HOzb8DLZ+/RaaYH2LeeOQb5k+JfM1cKpGDzKkS+Yq5VSxfMseK5QBzrUi+YO4VyX7mYKF8zlwslM+YkwWyj7lZIJ8yV/NlL/M2Xz5h/uYit3298rqN+Z2NXC5nXu9m3mcgh60emIb6xuqDdOSw1Q1TUS9ZHZGK/LV6YzLqLqs/kuV5nQufiNy1+iQReWv1ywTkrNU38bKB9c4Y5KvVP6NQl1p9dAfq11nwWFnMuuo25KrVWbciQ60OG4KzfwZ8EHLIA49GPW513QCZw7qvv8xGPZiLmjELdWQGas001J+pqFGT9S5J1AT8f3C7VF3+F5FZ+PIxIDE1IDEgMSAjMzMKeJxzZ/BliGJgYChhyAdjPYZkhkyGXIZ0hiqgKABOuAT9\" decompress_rle. r. $\"\"1,$\"\"1,1,1,5 if $\"\"1>512 b. 0.2% fi >=. 40%\"\n" +
                                               "m \"gmic_pdn_shape_rooster: base642img \"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\" decompress_rle. r. $\"\"1,$\"\"1,1,1,5 if $\"\"1>512 b. 0.2% fi >=. 40%\"\n" +
                                               "m \"gmic_pdn_shape_shopping_cart: base642img \"MiBzaG9ydCBsaXR0bGVfZW5kaWFuCjEgMTM0NSAxIDEgIzEzNDIKeJytlWlQlXUUxp9jWippabmmuEI5jjlFkFcREC/34kbCVYlAQYGATAkHF1RwQZFFzS1TUzNX3PdtmpxmaiZrpj6UzdQH/aRT5mRZpq3/03Pf+/JyL5Cf+vDM7z3/dz/nOeePVmglEICadj0Ro00qUo0PPmqSzQcd+0xa0PF/XZcWcn2aEz/4OM3E4p62w0QzDMNMDGJMtKVoWzH2WmPc8rnm1zU9F4M8zZW9ulcu6AXqvJy3dU7PUWflrKMzciZEp+W0o1NyKkQn5aStE3qCOi7HHR2TYyE6KkcdHZEjQTqsh+SQo4NyMET1Uh+iA3LA1n7dJ/sceXBD3RYvajf+qwdr9Bb8zNFLFl/Q9dhDttNXLX5n3KQXN02STTd2kz8wfo/nG+nGLvIW4+b04kfy3SDeNp4mTMJO8ifGDdzB+38mtzv04o7NX4zXpgfvkL8yDqUH28i7jBuZjHsm2aYXW7jewPtcD9CLt8nfGQfzDzPGZjI28/4/bf7F9WD+TW7idQ38x4y1OQYbeV4ZBxM6zuZYbAiicD3AsVhPtmK8jnzIZmsdb3Mc3iTbMG6JD5Nr+Yy2FifhCZ1AZuEpxmtY40jGq3U2hlpcAJfF5XCTdVqHCRY3I0NTyF3IZVyrh1HMuFbPoszih1hh8TO+MwXVeoU59vMaPeXnTZwgV+ldvG9R8Ym+RLaXLy12katcr9I+8j3jKh0sdy1WSZWulBW6wlalVIZouSx3tEyW6tIgLZEljiqkXMtlvs6XEi2Rmfqa5Gu+ZGu2ZGiG+DRNxut48ahHEjReXOqSKI2SITpEIjVC+vC7emgP6aydJEzDpI22EWMMvXGffrxDj9/CDXMdV801fGO+xVfmCj43X+Cy+RQfmY/xgbmEC+YiTpszOGaOo94cxB6zBzvMTmwxW7HRbMJasxbVpgaVphLlpgJlZiFKTSlmm2IUmSLkmXxkm2xkmalIN+mYYFKQTA8m0edu9l6iSUSCGUUlIM7EYaSlkZZiOUNHWBphabgZbsllM3DsakGN51uWKyRueL7/fX4F3h+g/5viTbylBKrKVNGTbaVOa6XWUY3UOKp2WO1olayyPBHwxUpLwd5o9MIyxwMVUsHal1taLIt1kSzShbJQy6SMfpiv82SezpW5WiqlOkfm0B8lWizFOktm6Ux6pUiKtEAKNE/yNEdyNFMyNVzC9TIKbwvCTBekaUd8bXojU7vTAwMwQ/viuhmEQo3kvByC13Uw59tzeEOHcl5Fo1SjOHdcWKAx9NAILNLhnB9xqNBYGNZwqcaz70ejUhPZ70lYqW72s5d94sEjOgY17Ot27Ps69nUY+3ENe7kD+8Xfe49pKufFRHRSH+dKGvt9MuePD0+Sb1FdNZ1zbAq6aQa26svobjEDPTWTc/MVm5nopVM5f7NsTkW4ZnNOT7OZjb46nXM/x+Z09Ndc7g8zmjAXAzUf+zSvCfMRQe235k8BDjRjAZ4OYr0WBrEQB6lntOh/ZcNzm7+v+ff4vzOCCjDwHxFB/+XnQP77Xv7vgCD689GfudrN/PQLoj9/fZnTXcxnHzu/4cz5Tua7t53/XqzJdtajJ2vkr09P1mwbj7uznltYx25WXdNZ38nch6aw3j7WfRI60w8b6INOli9S8Th9so7+6GjtAyl4lD5aTf+0p69qrX3Cy3nt3zeSOH899N8o+tBNP8bTl6O4b42kT+PoVxd9G8v98EX6eBh+M1H0dTT9PRQl+jz9Phiz9Fn6P5J9MIjzsR/3joG4ZnogS8PZLx3h067oYFoj7sa//BfTxjEgMTUgMSAxICMzMwp4nHNn8GWIYmBgKGHIB2M9hmSGTIZchnSGKqAoAE64BP0=\" decompress_rle. r. $\"\"1,$\"\"1,1,1,5 if $\"\"1>512 b. 0.2% fi >=. 40%\"\n" +
                                               "m \"gmic_pdn_multicut: repeat s $=a $=b val_a=$\"\"{{a{{$>*2+1}}}} val_b=$\"\"{{b{{$>*2+2}}}} sh $> cut. $val_a,$val_b rm. done\"\n" +
                                               "color_space={0}\n" +
                                               "tile_id={1}\n" +
                                               "use_clipboard={2}\n" +
                                               "tile_w={3}\n" +
                                               "tile_h={4}\n" +
                                               "ratio={5}\n" +
                                               "ang={6}\n" +
                                               "mirror_mode={7}\n" +
                                               "sublevel={8}\n" +
                                               "interpolation={9} interpolation={{$interpolation>2?$interpolation+1:$interpolation}}\n" +
                                               "tile_boundary={10}\n" +
                                               "preprocess={11}\n" +
                                               "fitmode={12}\n" +
                                               "ptiters={13}\n" +
                                               "thickness={14}\n" +
                                               "z_convolve={15}\n" +
                                               "z_convolve_boundary={16}\n" +
                                               "if $z_convolve\n" +
                                               " offpixel={{$z_convolve*-1}}\n" +
                                               " onpixel={{$z_convolve*2+1}}\n" +
                                               " ($offpixel/$onpixel/$offpixel)\n" +
                                               " store. zmap\n" +
                                               "fi\n" +
                                               "ow={{w#0}}\n" +
                                               "oh={{h#0}}\n" +
                                               "if !$tile_w&&$!$tile_h return fi\n" +
                                               "tile_w={{!$tile_w?$tile_h:$tile_w}}\n" +
                                               "tile_h={{!$tile_h?$tile_w:$tile_h}}\n" +
                                               "mini_w={{ceil(w#0/$tile_w)}}\n" +
                                               "mini_h={{ceil(h#0/$tile_h)}}\n" +
                                               "nw={{$mini_w*$tile_w}}\n" +
                                               "nh={{$mini_h*$tile_h}}\n" +
                                               "convert_colors_fwd=${{arg\\ 1+$color_space,none,rgb2ryb,cs_error,rgb2hcy,rgb2hsi,rgb2hsl,rgb2hsv,rgb2lab,rgb2lch}}\n" +
                                               "convert_colors_bwd=${{arg\\ 1+$color_space,none,ryb2rgb,cs_error,hcy2rgb,hsi2rgb,hsl2rgb,hsv2rgb,lab2rgb,lch2rgb}}\n" +
                                               "if $color_space>=0&&$color_space<3 cutf_vals=0,255,0,255,0,255,0,255\n" +
                                               "elif $color_space>=3&&$color_space<7 cutf_vals=0,360,0,100,0,1\n" +
                                               "elif $color_space==7 cutf_vals=0,100,-176,176,-176,176\n" +
                                               "else cutf_vals=0,100,0,255,{{-pi}},{{pi}}\n" +
                                               "fi\n" +
                                               "if $cs_conv\n" +
                                               " if $color_space\n" +
                                               "  if $color_space!=2\n" +
                                               "   sh[0] 0,2 $convert_colors_fwd. rm.\n" +
                                               "  else\n" +
                                               "   l[0] if s==4 s c,-3 rgb2cmyk.. a c else rgb2cmyk fi endl\n" +
                                               "  fi\n" +
                                               " fi\n" +
                                               "fi\n" +
                                               "if !$use_clipboard k[0] " + gmic_pdn_shape + " {{max($tile_w,$tile_h)*$sublevel}},$ptiters,$thickness\n" +
                                               "else\n" +
                                               " if $!==2\n" +
                                               "  .\n" +
                                               "  if s==4\n" +
                                               "    s. c,-3 to_gray.. *[-2,-1]\n" +
                                               "  else\n" +
                                               "    to_gray.\n" +
                                               "  fi\n" +
                                               " else\n" +
                                               "  r[0] $nw,$nh,100%,100%,0,$preprocess,.5,.5\n" +
                                               "  r[0] $mini_w,$mini_h,100%,100%,2\n" +
                                               "  r[0] $nw,$nh,100%,100%,1,0,.5,.5\n" +
                                               "  r[0] $ow,$oh,100%,100%,0,0,.5,.5\n" +
                                               "  return\n" +
                                               " fi\n" +
                                               "fi\n" +
                                               "if $ang-360*int($ang/360) rotate. $ang,1 fi\n" +
                                               "if $mirror_mode==1 mirror. x elif $mirror_mode==2 mirror. y fi\n" +
                                               "n. 0,1 autocrop. 0\n" +
                                               "if $fitmode\n" +
                                               " shape_image_ratio={{w#-1/h#-1}}\n" +
                                               " target_image_ratio={{$tile_w/$tile_h}}\n" +
                                               " resize_width={{$target_image_ratio>$shape_image_ratio?w#-1*($tile_h/h#-1):$tile_w}}\n" +
                                               " resize_height={{$target_image_ratio>$shape_image_ratio?$tile_h:h#-1*($tile_w/w#-1)}}\n" +
                                               " r. {{$resize_width*$ratio}},{{$resize_height*$ratio}},1,1,$interpolation,0,.5,.5\n" +
                                               " r. $tile_w,$tile_h,1,1,0,0,.5,.5\n" +
                                               "else\n" +
                                               " r. {{w#-1*(1/$ratio)}},{{h#-1*(1/$ratio)}},1,1,0,0,.5,.5\n" +
                                               " r. $tile_w,$tile_h,1,1,{{$interpolation}},0,.5,.5\n" +
                                               "fi\n" +
                                               "cut. 0,1 n. 0,1\n" +
                                               "if $tile_boundary==0\n" +
                                               " r. $nw,$nh,100%,100%,0,2\n" +
                                               "elif $tile_boundary==1\n" +
                                               " r. $nw,100%,100%,100%,0,3\n" +
                                               " r. 100%,$nh,100%,100%,0,2\n" +
                                               "elif $tile_boundary==2\n" +
                                               " r. 100%,$nh,100%,100%,0,3\n" +
                                               " r. $nw,100%,100%,100%,0,2\n" +
                                               "elif $tile_boundary==3\n" +
                                               " r. $nw,$nh,100%,100%,0,3\n" +
                                               "fi\n" +
                                               "avgc={{avg(crop(#-1,0,0,$tile_w,$tile_h))}}\n" +
                                               "+negate.\n" +
                                               "r[0] $nw,$nh,100%,100%,0,$preprocess,.5,.5\n" +
                                               "+*[0] [-2]\n" +
                                               "+*[0] [-2]\n" +
                                               "$mini_w,$mini_h,2,{{s#0}},\"begin(\n" +
                                               " const avg_c=\"$avgc\";\n" +
                                               " const tw=\"$tile_w\";\n" +
                                               " const th=\"$tile_h\";\n" +
                                               " const wwhh=tw*th;\n" +
                                               " const w_avg=wwhh*avg_c;\n" +
                                               " const iw_avg=wwhh-w_avg;\n" +
                                               " );\n" +
                                               "if(z\n" +
                                               " ,sum(crop(#-1,x*tw,y*th,0,c,tw,th,1,1))/iw_avg;\n" +
                                               " ,sum(crop(#-2,x*tw,y*th,0,c,tw,th,1,1))/w_avg;\n" +
                                               ");\"\n" +
                                               "if $z_convolve\n" +
                                               " $zmap convolve.. .,$z_convolve_boundary rm.\n" +
                                               "fi\n" +
                                               "if $cs_conv\n" +
                                               " if $color_space\n" +
                                               "  if $color_space!=2\n" +
                                               "   sh. 0,2\n" +
                                               "   if $z_convolve gmic_pdn_multicut. $cutf_vals fi\n" +
                                               "   $convert_colors_bwd.\n" +
                                               "   rm.\n" +
                                               "  else\n" +
                                               "   if s#0==4 cmyk2rgb. r[0] 100%,100%,100%,3\n" +
                                               "   else s. c,-4 cmyk2rgb.. a[-2,-1] c r[0] 100%,100%,100%,4\n" +
                                               "   fi\n" +
                                               "  fi\n" +
                                               "  if $z_convolve cut. 0,255 fi\n" +
                                               " fi\n" +
                                               "fi\n" +
                                               "f[0] \"begin(\n" +
                                               " const tw=\"$tile_w\";\n" +
                                               " const th=\"$tile_h\";\n" +
                                               ");\n" +
                                               "posx=int(x/tw);posy=int(y/th);" +
                                               "lerp(I(#-1,posx,posy,0),I(#-1,posx,posy,1),i0#-4);\"\n" +
                                               "r[0] $ow,$oh,100%,100%,0,0,.5,.5\n" +
                                               "k[0,$end_image_list_id]\n" +
                                               "um gmic_pdn_shape_circle,gmic_pdn_shape_cupid,gmic_pdn_shape_diamond,gmic_pdn_shape_polygon,gmic_pdn_shape_snowflake,gmic_pdn_shape_star,gmic_pdn_shape_heart,gmic_pdn_shape_australia,gmic_pdn_shape_barbedwire,gmic_pdn_shape_crosshair,gmic_pdn_shape_dragonfly,gmic_pdn_shape_flip,gmic_pdn_shape_gumleaf,gmic_pdn_shape_information,gmic_pdn_shape_kookaburra,gmic_pdn_shape_mail,gmic_pdn_shape_mapleleaf,gmic_pdn_shape_paintsplat,gmic_pdn_shape_paw,gmic_pdn_shape_phone,gmic_pdn_shape_rooster,gmic_pdn_shape_shopping_cart,gmic_pdn_multicut",
                                               color_space_id.ToString(CultureInfo.InvariantCulture),
                                               tile_id.ToString(CultureInfo.InvariantCulture),
                                               use_clipboard.ToString(CultureInfo.InvariantCulture),
                                               tile_w.ToString(CultureInfo.InvariantCulture),
                                               tile_h.ToString(CultureInfo.InvariantCulture),
                                               ratio.ToString(CultureInfo.InvariantCulture),
                                               rotation.ToString(CultureInfo.InvariantCulture),
                                               shape_mirror_axis_mode.ToString(CultureInfo.InvariantCulture),
                                               subpixel_process.ToString(CultureInfo.InvariantCulture),
                                               interp.ToString(CultureInfo.InvariantCulture),
                                               tile_bound_id.ToString(CultureInfo.InvariantCulture),
                                               preprocess_id.ToString(CultureInfo.InvariantCulture),
                                               ftmode.ToString(CultureInfo.InvariantCulture),
                                               pts.ToString(CultureInfo.InvariantCulture),
                                               thickness.ToString(CultureInfo.InvariantCulture),
                                               zconvf.ToString(CultureInfo.InvariantCulture),
                                               zconvb.ToString(CultureInfo.InvariantCulture));

                // Run the G'MIC command and allow it to receive cancellation info from Paint.NET.
                gmic.RunGmic(command, () => this.IsCancelRequested);

                if (gmic.Error != null)
                {
                    this.Services.GetService<IExceptionDialogService>().ShowErrorDialog(null, gmic.Error);
                }
                else if (!gmic.Canceled)
                {
                    Surface output = gmic.OutputImages?[0]?.Surface;

                    if (output != null)
                    {
                        // Copy the rendered G'MIC image to the destination surface,
                        // and restrict the copied portions to the user's selection.
                        dstArgs.Surface.CopySurface(output, this.EnvironmentParameters.GetSelectionAsPdnRegion());
                    }
                }
            }

            base.OnSetRenderInfo(newToken, dstArgs, srcArgs);
        }

        protected override void OnRender(Rectangle[] renderRects, int startIndex, int length)
        {
            // All work is performed in OnSetRenderInfo.
        }
    }
}

 

 

Edited by Reptillian

G'MIC Filter Developer

Link to comment
Share on other sites

  • Reptillian changed the title to Loading a icon into gmic-pdn project (Solved)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...