# Brush Factory v2.0.2 (May 3rd, 2021)

## Recommended Posts

He's asking for the ability to make the brush strokes lag behind the cursor to a distance, which allows the brush strokes to be smoother. They're currently made by repeating the brush image X amount of times along a line based on the "density" of the brush stroke which is measured relative to the size of the brush. This is how paint.net draws lines as well (you can see the actual lines if the program lags while you draw, or if you draw really fast in circular motions). The main advantage to this method is that there are no "gaps" as would occur if you just draw at the current mouse position every frame. But I digress.

On 9/18/2020 at 8:00 PM, Metalistic said:

tool that slow down the speed of the brush to make smooth draw

You're in luck because this is a listed feature I intend to support anyway. I might as well get around to it. All I need is to set the draw point as soon as the mouse is clicked. Instead of creating a line from the draw point to the mouse position every frame, I need to get the angle and magnitude of the vector and use some % of the magnitude towards the mouse point, then update the draw point to the new location. This should simulate what you get from most other programs, where the brush stroke lags behind the cursor position.

There is a better way to do it, which is to adjust the positions of the points so they're "smoother". This is a lot harder and requires drawing on a separate surface and updating the drawn image as the points adjust. The advantage is that the brush strokes are simply smoother without lagging the cursor. Both methods have their merits. I'll go with the first because I don't have to change the entire way that Brush Factory draws. I'll see what I can do when I get off work later.

• 1
• 1

##### Share on other sites

Hi, love the plugin! I was wondering if there was a way (or you can implement one) to apply a texture to the image used for the brush shape itself, instead of only solid colors (when I'm using black templates). Say you could select a section of an image, and then the shape you want to overlay it onto, so you could give your brush the texture of gold paper, or even part of another picture inside the shape.

Yeah you could just put the texture on the image outside the app, but if you want to try multiple textures on the same image you have to keep doing it externally and saving as separate file, so it's not very fast and breaks your flow. The good thing about it being in a brush is you can effortlessly copy the same image

##### Share on other sites

Hi and welcome @SabreS.  🙂

While waiting for Joshua's reply, I recommend using Creative Text Pro, which allows you to put any texture on text and objects.

Read the post carefully for full instructional use. I find myself using this plugin a lot. It's for so much more than text.

"Never, ever lose your sense of humor - you'll live longer"

##### Share on other sites
On 9/24/2020 at 12:06 PM, SabreS said:

Hi, love the plugin! I was wondering if there was a way (or you can implement one) to apply a texture to the image used for the brush shape itself, instead of only solid colors (when I'm using black templates). Say you could select a section of an image, and then the shape you want to overlay it onto, so you could give your brush the texture of gold paper, or even part of another picture inside the shape.

Yeah you could just put the texture on the image outside the app, but if you want to try multiple textures on the same image you have to keep doing it externally and saving as separate file, so it's not very fast and breaks your flow. The good thing about it being in a brush is you can effortlessly copy the same image

There is a way, actually, which has been around since the first version of this plugin.
Just make sure "colorize brush" is off and it won't use the current color:

That's it! If you're using a brush that has colors in it, you can go ahead from there. To reuse an image that Eli made illustrating this:
Let me know if that doesn't your question, and have fun!

Edited by Joshua Lamusga

##### Share on other sites
On 9/22/2020 at 11:33 AM, Joshua Lamusga said:

He's asking for the ability to make the brush strokes lag behind the cursor to a distance, which allows the brush strokes to be smoother. They're currently made by repeating the brush image X amount of times along a line based on the "density" of the brush stroke which is measured relative to the size of the brush. This is how paint.net draws lines as well (you can see the actual lines if the program lags while you draw, or if you draw really fast in circular motions). The main advantage to this method is that there are no "gaps" as would occur if you just draw at the current mouse position every frame. But I digress.

You're in luck because this is a listed feature I intend to support anyway. I might as well get around to it. All I need is to set the draw point as soon as the mouse is clicked. Instead of creating a line from the draw point to the mouse position every frame, I need to get the angle and magnitude of the vector and use some % of the magnitude towards the mouse point, then update the draw point to the new location. This should simulate what you get from most other programs, where the brush stroke lags behind the cursor position.

There is a better way to do it, which is to adjust the positions of the points so they're "smoother". This is a lot harder and requires drawing on a separate surface and updating the drawn image as the points adjust. The advantage is that the brush strokes are simply smoother without lagging the cursor. Both methods have their merits. I'll go with the first because I don't have to change the entire way that Brush Factory draws. I'll see what I can do when I get off work later.

Glad to see you are interested, pleas notify me when you have done, it would awesome start doing my drawings with that tool, for the moment im just gonna use the lines

##### Share on other sites
On 9/25/2020 at 12:17 PM, lynxster4 said:

Hi and welcome @SabreS.  🙂

While waiting for Joshua's reply, I recommend using Creative Text Pro, which allows you to put any texture on text and objects.

Read the post carefully for full instructional use. I find myself using this plugin a lot. It's for so much more than text.

Thank you, this should be useful!

##### Share on other sites
12 minutes ago, SabreS said:

Thank you, this should be useful!

##### Share on other sites

Hi all, I'm trying to achieve a Fiona Staples (Saga, Archie) type look with my cartoon colouring, and one thing that it seems would help is the right shape of brush. I'm hoping to get something along the lines of what the guy in this video uses (around 3m26s):

Would Brush Factory be the best plugin to use for this? I've looked at the user guide and stuff but I can't quite tell... Thanks!

##### Share on other sites

Hi @bbX1138. It seems doable to me. Brush Factory might be the best plugin, if only for a lack of options when it comes to this. I made a simple brush based on the Youtube video, which I'm attaching to this message. With this simple triangle brush and a brush density of 20 (because 10 isn't enough for this shape), I get results comparable to the video, shown side-by-side below. You can modify the brush shape as needed; it's little more than a glorified triangle

##### Share on other sites

Amazing, thanks @Joshua Lamusga!

##### Share on other sites

Trying Brush Factory out, and it's a shame it only lets you see a single layer - not very useful when you want to 'ink' over sketch lines or use layers to do colouring...

##### Share on other sites
9 hours ago, bbX1138 said:

Trying Brush Factory out, and it's a shame it only lets you see a single layer - not very useful when you want to 'ink' over sketch lines or use layers to do colouring...

It's a shame alright. A hard limitation of the paint.net API; nothing I can do about it because the plugin cannot access layer information. Just to make sure you know about the workaround I made: you can copy an image to the clipboard before going into Brush Factory, then right-click the canvas and use clipboard image as background. It's the best I can do with what I'm given (but it sounds like you don't know about this, and maybe it'll work for you )

(Note that "Use clipboard as background" only shows up if there's an image on the clipboard...it's sneaky like that.)

##### Share on other sites

Ah, that is helpful, thank you!

##### Share on other sites
• 1 month later...

Just installed it and when i try and use it Paint.Net crashes!

This text file was created because paint.net crashed. Please e-mail this to crashlog4@getpaint.net so we can diagnose and fix the problem.

Application version: paint.net 4.2.14 (Final 4.214.7601.39231)
Time of crash: 19/11/2020 07:36:14
Application uptime: 00:00:07.3712536
Application state: Running
Working set: 165,124 KiB
Install type: Classic
Application directory: C:\Installed\paint.net
Current directory: C:\Installed\paint.net
Install directory: C:\Installed\paint.net
OS Version: Windows 10 Pro 10.0.18363.0 x64 (0x30)
.NET version: CLR 4.0.30319.42000 x64
Processor: "Intel(R) Core(TM) m7-6Y75 CPU @ 1.20GHz" @ ~1512MHz (2C/4T, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2)
Physical memory: 16275 MB
Video card: Intel(R) HD Graphics 515 (v:8086, d:191E, r:7), Microsoft Basic Render Driver (v:1414, d:8C, r:0), Microsoft Basic Render Driver (v:1414, d:8C, r:0), Microsoft Basic Render Driver (v:1414, d:8C, r:0), Microsoft Basic Render Driver (v:1414, d:8C, r:0)
Hardware acceleration: True (default: True)
Pointers: Touchscreen (Touch, 10x), Virtual Multitouch Device (ExternalPen, 1x)
UI animations: True
UI DPI: 96 dpi (1.00x scale)
UI theme: VisualStyleClass=Aero, EffectiveTheme=Aero, DWM=yes, AeroColorScheme=Light, ThemeFileName=Aero.msstyles
Updates: True, 19/11/2020 (journal: ShouldCheckForUpdate, CheckedForUpdate)
Locale: pdnr.c: en-US, hklm: en-US, hkcu: en-US, cc: en-GB, cuic: en-US
Flags:

Exception details:
System.ArgumentNullException: Value cannot be null.
Parameter name: path1
at System.IO.Path.Combine(String path1, String path2)
at BrushFactory.WinBrushFactory.OnShown(EventArgs e)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Forms.Control.InvokeMarshaledCallbacks()

Managed assemblies:
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @ C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll
PaintDotNet, Version=4.214.7601.39231, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\PaintDotNet.exe
PaintDotNet.Core, Version=4.214.7601.39231, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\PaintDotNet.Core.dll
PaintDotNet.Base, Version=4.214.7601.39231, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\PaintDotNet.Base.dll
System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @ C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll
System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @ C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll
System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @ C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll
System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @ C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll
PaintDotNet.SystemLayer, Version=4.214.7601.39231, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\PaintDotNet.SystemLayer.dll
PaintDotNet.Framework, Version=4.214.7601.39231, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\PaintDotNet.Framework.dll
PaintDotNet.Resources, Version=4.214.7601.39231, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\PaintDotNet.Resources.dll
PaintDotNet.Effects, Version=4.214.7601.39231, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\PaintDotNet.Effects.dll
PaintDotNet.Data, Version=4.214.7601.39231, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\PaintDotNet.Data.dll
PaintDotNet.SystemLayer.Native.x64, Version=4.214.7601.39231, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\PaintDotNet.SystemLayer.Native.x64.dll
System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @ C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll
System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @ C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll
System.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @ C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xaml\v4.0_4.0.0.0__b77a5c561934e089\System.Xaml.dll
System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @ C:\Installed\paint.net\System.Runtime.CompilerServices.Unsafe.dll
RawFileType, Version=1.2.2.0, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\FileTypes\RawFileType.dll
AvifFileType, Version=1.1.4.0, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Bundled\AvifFileType\AvifFileType.dll
DdsFileTypePlus, Version=1.10.7.0, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Bundled\DDSFileTypePlus\DdsFileTypePlus.dll
WebPFileType, Version=1.3.4.0, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Bundled\WebPFileType\WebPFileType.dll
System.Collections.Immutable, Version=1.2.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @ C:\Installed\paint.net\System.Collections.Immutable.dll
Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @ C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Accessibility\v4.0_4.0.0.0__b03f5f7f11d50a3a\Accessibility.dll
System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 @ C:\Installed\paint.net\System.Buffers.dll
System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 @ C:\Installed\paint.net\System.Memory.dll
Alpha2Gray, Version=4.5.6832.21862, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Alpha2Gray.dll
BandWPlus, Version=1.3.7359.317, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\BandWPlus.dll
BBChart, Version=1.0.7358.33924, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\BBChart.dll
"Borders N' Shapes", Version=4.0.4642.26476, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Borders N' Shapes.dll
BrushFactory, Version=2.0.0.29094, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\BrushFactory.dll
Burninate, Version=4.6.7358.31797, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Burninate.dll
Calendar, Version=4.6.7358.32649, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Calendar.dll
ChromaKeyPlugin, Version=1.0.0.2, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\ChromaKeyPlugin.dll
Color Match, Version=4.0.4642.26532, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Color Match.dll
ColorBalance, Version=4.7.7401.17173, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\ColorBalance.dll
ContentAwareFill, Version=1.3.2.0, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\ContentAwareFill.dll
CreativeTextPro, Version=1.1.7358.34307, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\CreativeTextPro.dll
Curves+, Version=4.0.6119.31044, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Curves+.dll
Dimensions, Version=1.3.6826.38472, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Dimensions.dll
Dream, Version=4.6.7358.35004, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Dream.dll
FillFromClipboard, Version=4.7.7358.36519, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\FillFromClipboard.dll
FillFromFile, Version=4.7.7358.36581, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\FillFromFile.dll
Film, Version=4.0.4642.26607, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Film.dll
Flip, Version=4.6.7358.36953, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Flip.dll
FloydSteinbergDithering, Version=4.6.7358.37110, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\FloydSteinbergDithering.dll
GaussianBlurPlus, Version=4.2.5691.27401, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\GaussianBlurPlus.dll
Gray2Alpha, Version=4.5.6826.36897, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Gray2Alpha.dll
Grid Warp, Version=4.0.6544.34496, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Grid Warp.dll
GridCheckerboard, Version=4.5.6828.36789, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\GridCheckerboard.dll
HueSatPlus, Version=4.6.7359.209, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\HueSatPlus.dll
isolate, Version=1.0.3303.3202, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\isolate.dll
Jitter, Version=4.0.4642.26986, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Jitter.dll
Landscape, Version=4.6.7358.37463, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Landscape.dll
LevelHorizon, Version=4.6.7358.37589, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\LevelHorizon.dll
Liquify, Version=4.0.5873.25113, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Liquify.dll
MemeMaker, Version=4.5.6828.38061, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\MemeMaker.dll
ObjectTools, Version=5.0.7502.21624, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\ObjectTools.dll
OilPaintingPlus, Version=4.6.7358.38406, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\OilPaintingPlus.dll
Feather, Version=2.3.4315.37038, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\OldFeather.dll
Outline Object, Version=4.0.4642.26954, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Outline Object.dll
PasteAlpha, Version=4.6.7358.38804, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\PasteAlpha.dll
Pastel, Version=4.6.7358.38877, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Pastel.dll
Pixelate+, Version=4.0.4642.26940, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Pixelate+.dll
Polygon, Version=4.5.6828.38648, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Polygon.dll
Random Effect, Version=4.0.4642.26928, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Random Effect.dll
Random Shape Fill, Version=4.0.4642.26910, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Random Shape Fill.dll
RemoveDust, Version=4.5.6826.37862, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\RemoveDust.dll
ScriptLab, Version=4.0.6107.18914, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\ScriptLab.dll
SeamCarving, Version=4.6.7358.39596, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\SeamCarving.dll
SelectionTools, Version=5.0.7502.22140, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\SelectionTools.dll
Smudge, Version=4.0.5873.25097, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Smudge.dll
Splatter, Version=4.0.5873.25083, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Splatter.dll
Stitch, Version=4.0.4642.26808, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Stitch.dll
Temperature, Version=4.6.7358.39746, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Temperature.dll
Trail, Version=4.0.4642.26791, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Trail.dll
Transparency, Version=4.6.7358.39871, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Transparency.dll
Twist, Version=4.0.5873.25056, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\Twist.dll
VignettePlus, Version=4.6.7358.40027, Culture=neutral, PublicKeyToken=null @ C:\Installed\paint.net\Effects\VignettePlus.dll

Native modules:
C:\Installed\paint.net\PaintDotNet.exe, version=4.214.7601.39231
C:\WINDOWS\SYSTEM32\ntdll.dll, version=10.0.18362.1171 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\MSCOREE.DLL, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\System32\KERNEL32.dll, version=10.0.18362.1110 (WinBuild.160101.0800)
C:\WINDOWS\System32\KERNELBASE.dll, version=10.0.18362.1171 (WinBuild.160101.0800)
C:\WINDOWS\System32\msvcrt.dll, version=7.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\System32\sechost.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\System32\RPCRT4.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscoreei.dll, version=4.8.4180.0 built by: NET48REL1LAST_B
C:\WINDOWS\System32\SHLWAPI.dll, version=10.0.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\System32\combase.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\System32\ucrtbase.dll, version=10.0.18362.1110 (WinBuild.160101.0800)
C:\WINDOWS\System32\bcryptPrimitives.dll, version=10.0.18362.836 (WinBuild.160101.0800)
C:\WINDOWS\System32\GDI32.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\System32\win32u.dll, version=10.0.18362.1198 (WinBuild.160101.0800)
C:\WINDOWS\System32\gdi32full.dll, version=10.0.18362.1139 (WinBuild.160101.0800)
C:\WINDOWS\System32\msvcp_win.dll, version=10.0.18362.1110 (WinBuild.160101.0800)
C:\WINDOWS\System32\USER32.dll, version=10.0.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\System32\IMM32.DLL, version=10.0.18362.387 (WinBuild.160101.0800)
C:\WINDOWS\System32\kernel.appcore.dll, version=10.0.18362.1171 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\VERSION.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll, version=4.8.4250.0 built by: NET48REL1LAST_C
C:\WINDOWS\SYSTEM32\VCRUNTIME140_CLR0400.dll, version=14.10.25028.0 built by: VCTOOLSD15RTM
C:\WINDOWS\SYSTEM32\ucrtbase_clr0400.dll, version=14.10.25028.0 built by: VCTOOLSD15RTM
C:\WINDOWS\System32\psapi.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\mscorlib\52ce2de93895cec3507794c893974551\mscorlib.ni.dll, version=4.8.4250.0 built by: NET48REL1LAST_C
C:\WINDOWS\System32\ole32.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\system32\uxtheme.dll, version=10.0.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\System32\CRYPTSP.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\system32\rsaenh.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\System32\bcrypt.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\CRYPTBASE.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\System\11b8b7ed51c47042b76fe5b32dfd449f\System.ni.dll, version=4.8.4200.0 built by: NET48REL1LAST_C
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\System.Core\8f7375f6c9d69a1223d9f35b580fbd56\System.Core.ni.dll, version=4.8.4270.0 built by: NET48REL1LAST_C
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\WindowsBase\be71d4a0f4ab48f9c5ace2efe651ba8e\WindowsBase.ni.dll, version=4.8.4270.0 built by: NET48REL1LAST_C
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\System.Drawing\34b6d05f5af23ea33a3a82816c5038b5\System.Drawing.ni.dll, version=4.8.3752.0 built by: NET48REL1
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\PresentationCore\11e75a7d37325cd9e3a7f7b93161666e\PresentationCore.ni.dll, version=4.8.4270.0 built by: NET48REL1LAST_C
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\Presentatio5ae0f00f#\d3a2cb9682d2e9e918ccb2b386cbcc23\PresentationFramework.ni.dll, version=4.8.4270.0
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\PaintDotNet.Base\f9fbb24d53bfb5c40a3f332e68ef8e1e\PaintDotNet.Base.ni.dll, version=4.214.7601.39231
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\System.Windows.Forms\3c8baea8cce693cea1ae9a39e0e78b0f\System.Windows.Forms.ni.dll, version=4.8.4270.0 built by: NET48REL1LAST_C
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\PaintDotNet500b2e4f#\23a66a0f3b8ae2973d4e9a204643dedb\PaintDotNet.SystemLayer.ni.dll, version=4.214.7601.39231
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\PaintDotNet.Core\44521dd2fe4b5f71f83ef9ffaa515a5e\PaintDotNet.Core.ni.dll, version=4.214.7601.39231
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\PaintDotNet26779e70#\23ac81dec229d31ef799e442b862713b\PaintDotNet.Resources.ni.dll, version=4.214.7601.39231
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\PaintDotNet7afaaa15#\40f14382329557ce4dc1690b17a8a2dc\PaintDotNet.Framework.ni.dll, version=4.214.7601.39231
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\PaintDotNet.Data\ab85c456a93220153299f724531b07ab\PaintDotNet.Data.ni.dll, version=4.214.7601.39231
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\PaintDotNet.Effects\3f259b89e7efc0e88f3615a8ec269bbe\PaintDotNet.Effects.ni.dll, version=4.214.7601.39231
C:\WINDOWS\SYSTEM32\dwrite.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WPF\wpfgfx_v0400.dll, version=4.8.4270.0 built by: NET48REL1LAST_C
C:\WINDOWS\System32\OLEAUT32.dll, version=10.0.18362.1110 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\MSVCP140_CLR0400.dll, version=14.10.25028.0 built by: VCTOOLSD15RTM
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WPF\PresentationNative_v0400.dll, version=4.8.4270.0 built by: NET48REL1LAST_C
C:\WINDOWS\System32\shell32.dll, version=10.0.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\System32\cfgmgr32.dll, version=10.0.18362.387 (WinBuild.160101.0800)
C:\WINDOWS\System32\shcore.dll, version=10.0.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\System32\windows.storage.dll, version=10.0.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\System32\profapi.dll, version=10.0.18362.693 (WinBuild.160101.0800)
C:\WINDOWS\System32\powrprof.dll, version=10.0.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\System32\UMPDC.dll, version=
C:\Installed\paint.net\Native\X64\vcruntime140.dll, version=14.27.29016.0 built by: vcwrkspc
C:\Installed\paint.net\Native\X64\vcruntime140_1.dll, version=14.27.29016.0 built by: vcwrkspc
C:\Installed\paint.net\Native\X64\msvcp140.dll, version=14.27.29016.0 built by: vcwrkspc
C:\Installed\paint.net\Native\X64\msvcp140_1.dll, version=14.27.29016.0 built by: vcwrkspc
C:\Installed\paint.net\Native\X64\msvcp140_2.dll, version=14.27.29016.0 built by: vcwrkspc
C:\Installed\paint.net\Native\X64\msvcp140_codecvt_ids.dll, version=14.27.29016.0 built by: vcwrkspc
C:\Installed\paint.net\Native\X64\vcomp140.dll, version=14.27.29016.0 built by: vcwrkspc
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\PaintDotNetc8826574#\21f7b5ef2fdf38e167e4c8f634752834\PaintDotNet.SystemLayer.Native.x64.ni.dll, version=4.214.7601.39231
C:\Installed\paint.net\PaintDotNet.SystemLayer.Native.x64.dll, version=4.214.7601.39231
C:\WINDOWS\SYSTEM32\PROPSYS.dll, version=7.0.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\WinSxS\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.18362.1198_none_cf6cfe3d3eed52fd\gdiplus.dll, version=10.0.18362.1198 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\WindowsCodecs.dll, version=10.0.18362.959 (WinBuild.160101.0800)
C:\WINDOWS\System32\clbcatq.dll, version=2001.12.10941.16384 (WinBuild.160101.0800)
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\System.Configuration\e7a78a688137525434ca0e331fa4ae01\System.Configuration.ni.dll, version=4.8.4190.0 built by: NET48REL1LAST_B
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\System.Xml\da63232ab47cbdbe78f2126762a3b4f4\System.Xml.ni.dll, version=4.8.3752.0 built by: NET48REL1
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\System.Xaml\3167423eb90219ebca91aa6ed8e89f4d\System.Xaml.ni.dll, version=4.8.4270.0 built by: NET48REL1LAST_C
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\System.Runtea61dfd5#\313b14292b4006714eefaf0d0824e2d8\System.Runtime.CompilerServices.Unsafe.ni.dll, version=4.700.20.12001
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clrjit.dll, version=4.8.4250.0 built by: NET48REL1LAST_C
C:\WINDOWS\System32\MSCTF.dll, version=10.0.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\dxgi.dll, version=10.0.18362.1049 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\dxcore.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\System32\UIAnimation.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\mfplat.dll, version=10.0.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\RTWorkQ.DLL, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\CompPkgSup.DLL, version=10.0.18362.1 (WinBuild.160101.0800)
C:\Windows\System32\Windows.StateRepositoryPS.dll, version=10.0.18362.1171 (WinBuild.160101.0800)
C:\Windows\System32\WinTypes.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\d2d1.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\wtsapi32.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\WINSTA.dll, version=10.0.18362.836 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\d3d11.dll, version=10.0.18362.1171 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\D3D10Warp.dll, version=10.0.18362.1049 (WinBuild.160101.0800)
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\System.Coll4a4f96a7#\5767bff6c06020b11c13126746d64dc5\System.Collections.Immutable.ni.dll, version=4.700.20.21406
C:\WINDOWS\SYSTEM32\dwmapi.dll, version=10.0.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\system32\dataexchange.dll, version=10.0.18362.836 (WinBuild.160101.0800)
C:\WINDOWS\system32\dcomp.dll, version=10.0.18362.1110 (WinBuild.160101.0800)
C:\WINDOWS\system32\twinapi.appcore.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\system32\RMCLIENT.dll, version=10.0.18362.267 (WinBuild.160101.0800)
C:\WINDOWS\System32\TextInputFramework.dll, version=10.0.18362.1171 (WinBuild.160101.0800)
C:\WINDOWS\System32\CoreUIComponents.dll, version=10.0.18362.1110
C:\WINDOWS\System32\CoreMessaging.dll, version=10.0.18362.1049
C:\WINDOWS\SYSTEM32\ntmarta.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\System32\iertutil.dll, version=11.00.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\system32\Oleacc.dll, version=7.2.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\Accessibility\69d0b8b88fb2950c60faecce24c74de2\Accessibility.ni.dll, version=4.8.3752.0 built by: NET48REL1
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\System.Buffers\dfd707b88be85ab41250d8c490d4bb39\System.Buffers.ni.dll, version=4.6.28619.01
C:\WINDOWS\SYSTEM32\winmm.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\winmmbase.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\System.Memory\c3bf1d2ca73c54eb2b0c561ea8b33333\System.Memory.ni.dll, version=4.6.28619.01
C:\WINDOWS\System32\DriverStore\FileRepository\igdlh64.inf_amd64_6742a32d2d482a17\igd10iumd64.dll, version=26.20.100.8142
C:\WINDOWS\SYSTEM32\ncrypt.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\NTASN1.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\System32\DriverStore\FileRepository\igdlh64.inf_amd64_6742a32d2d482a17\igdgmm64.dll, version=26.20.100.8142
C:\WINDOWS\System32\DriverStore\FileRepository\igdlh64.inf_amd64_6742a32d2d482a17\igc64.dll, version=26.20.100.8142
C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\System.Wind0de890be#\e3e17c7213ae2a72fcda24b5a4fb49b5\System.Windows.Forms.DataVisualization.ni.dll, version=4.8.4200.0
C:\WINDOWS\system32\explorerframe.dll, version=10.0.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\winhttp.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\IPHLPAPI.DLL, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\System32\NSI.dll, version=10.0.18362.1171 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\dhcpcsvc6.DLL, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\dhcpcsvc.DLL, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\System32\WS2_32.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\rasapi32.dll, version=10.0.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\rasman.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\rtutils.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\system32\mswsock.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\DNSAPI.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\WINNSI.DLL, version=10.0.18362.449 (WinBuild.160101.0800)
C:\WINDOWS\System32\fwpuclnt.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\secur32.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\SSPICLI.DLL, version=10.0.18362.1049 (WinBuild.160101.0800)
C:\WINDOWS\system32\schannel.DLL, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\System32\CRYPT32.dll, version=10.0.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\System32\MSASN1.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\mskeyprotect.dll, version=10.0.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\system32\ncryptsslp.dll, version=10.0.18362.1 (WinBuild.160101.0800)
C:\WINDOWS\System32\SetupApi.dll, version=10.0.18362.1130 (WinBuild.160101.0800)
C:\WINDOWS\SYSTEM32\DEVOBJ.dll, version=10.0.18362.387 (WinBuild.160101.0800)
C:\WINDOWS\System32\WINTRUST.dll, version=10.0.18362.1198 (WinBuild.160101.0800)
------------------------------------------------------------------------------

##### Share on other sites

@stevehb Paint.net gave my plugin a bad value. There's better error handling now, and it tries to guess the location of the settings folder now in case paint.net does that again (which is documents\paint.net User Files). In any case it won't crash. Thanks for submitting the error.

(p.s. to others: As for the delay on having delayed brush strokes for smoothing, I've been busy lately. Sorry about that.)

Edited by Joshua Lamusga
Fixed a crash.

##### Share on other sites
12 hours ago, kimimiles said:

Thanks for sharing this info. I also looking for recommendation about alternatives to format factory...

You can usually find online converters for most things. I recommend Phatch for image-centric batch processing. I think there's some rudimentary batching plugin somewhere around here, but I'm not sure about it and in any case, phatch would beat it by a good amount.

You said format factory, but I'm assuming you meant WinFF (Windows file factory), which is actually really good software. If that's not what you meant, I recommend trying that, then.

##### Share on other sites
• 4 weeks later...

I've downloaded this Plugin now, ut can't set oder add new Brushes because i get alwaysthe same error message:

Quote

The settings folder could not be located. Your settings may not be loaded or saved.

What happens here?

##### Share on other sites
9 hours ago, Aredon said:

I've downloaded this Plugin now, ut can't set oder add new Brushes because i get alwaysthe same error message:

What happens here?

Paint.net sometimes returns no location when we ask where the documents folder is, which is a new problem. I don't get this problem personally, so it's difficult to mitigate. Brush Factory tries to directly guess the common location, e.g. C:\Users\you\Documents\paint.net User Files. If the folder doesn't exist there, it gives up with that error message. The program is usable except it won't save settings, but I understand how that's irritating.

It's possible that you moved paint.net, renamed it, or installed it somewhere else. Or changed the location of the paint.net user files folder. I really shouldn't have to make a guessing game at where that folder is, but currently paint.net doesn't want to cooperate, I guess.

@Rick Brewster userFilesService.UserFilesPath returns null these days. Any idea why? I get the service in a window OnShown event.

IUserFilesService userFilesService = (IUserFilesService)Services.GetService(typeof(IUserFilesService));
(IUserFilesService)Services.GetService(typeof(IUserFilesService));

If I get the answer I could avoid guessing later. I didn't write this particular code so I have even less of an idea why it's broken than normal. Thanks for looking.

##### Share on other sites

If PDN is returning null for UserFilesPath, it's because Windows itself, via the SHGetFolderPathW API, isn't giving up the location. Possibly because it doesn't exist and can't be created (PDN does pass CSIDL_FLAG_CREATE into SHGetFolderPathW). Maybe because of some file system permissions issue. Or maybe over-zealous antivirus is blocking creation. It's not clear to me, and depends on context (like maybe the Documents folder itself doesn't exist itself? or has been moved to a more strict location?). You must be able to gracefully handle a null result here, unfortunately. You will probably see the same problem when trying to work with custom palettes via the Colors window.

The "best" way to "handle" this error, in my opinion, is to just show an error dialog. You can do this via the IExceptionDialogService service and its ShowErrorDialog methods. That's what the app does when needed (e.g. when trying to work with custom palettes in the Colors form). You can pass null for the owner parameter and PDN will do its best to figure out what to hang the dialog off of (e.g. the main window or the effect form). I highly recommend doing this on the UI thread, which will be the case if you're doing this in the Shown event handler.

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

##### Share on other sites

I can also add a method to the IUserFilesService, such as GetUserFilesPath(), that will pass along the exception (this just provides more information for troubleshooting purposes). It will throw on error instead of returning null, in other words. The existing TryGetUserFilesPath() method will return null as well -- the exception is discarded and transformed into a null return value.

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

##### Share on other sites

whoa. this post is still active after 5 years or so.

i got a little problem: click this link and you'll see the problem i have.
Added text under the imgur screenshots

Edited by n_n
deleted unnecessary text on the post
##### Share on other sites
12 hours ago, n_n said:

whoa. this post is still active after 5 years or so.

i got a little problem: click this link and you'll see the problem i have.
Added text under the imgur screenshots

Same here.

##### Share on other sites
Quote

whoa. this post is still active after 5 years or so.

Not an uncommon sight on this forum, and I intend to at least maintain it until it becomes obsolete or people stop finding it useful.

Quote

i got a little problem: click this link and you'll see the problem i have.

I don't think my plugin is responsible for the disappearance of others in the same category; not sure how that would happen (or how it would be fixed if so).

Quote

The "best" way to "handle" this error, in my opinion, is to just show an error dialog.

Agreed, so I currently do. Unfortunate it's just an ambient environmental problem that causes null to be returned. Adding exception details would be useful for logging to learn what the problem might be. Luckily I go one step further to checking the documents folder. Thanks for responding.

Until there's more info on what the common issues are, I can't do much about it, so for the people who consistently have errors, a few questions:
- Are you running Windows 10 or a different version?
- Can other plugins access the "paint.net User Files" folder, if you know? You'll see data stored there if so.

Try this if you're having the settings problem ~~~

Try creating a folder exactly called paint.net User Files in your Documents folder at  "C:\Users\your_name\Documents\" (where your_name is your current username...the Documents shortcut button in File Explorer on the left-hand side should take you to the right place). Brush Factory currently looks for this folder and tries to load things from it; if there's just a mismatch with finding the path of the paint.net user files folder, this should mitigate the problem. An ugly workaround, but better than nothing (with my luck it will persist anyway. Knocking on wood)

(p.s. Happy New Year's, everyone -- or at least we're done with 2020)

Edited by Joshua Lamusga

##### Share on other sites

Brush Factory shows the same two error windows.

Am able to use Add Brushes button to manually load a brush from paint.net User Files in Documents folder.

(Or any other folder.)

I have removed and recreated the "paint.net User Files" folder.

Running Windows 10.

Smudge can access the "paint.net User Files" folder.

Quote

You'll see data stored there if so.

Not sure what this means.

##### Share on other sites

I was curious about these errors, so I opened Brush Factory this morning, and I too see the error messages. Running Windows 10 20H2.

I'm using IUserFilesService in a few of my plugins, and it's working fine in those.

I'll take a look at what's going on in the Brush Factory source code later tonight when I get back from work.

##### Share on other sites
• Joshua Lamusga changed the title to Brush Factory v2.0.2 (May 3rd, 2021)

## Join the conversation

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

×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.

×   Your previous content has been restored.   Clear editor

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

×
×