Jump to content
How to Install Plugins ×

PSFilterPdn (01-18-2024)


null54

Recommended Posts

The problem is that PSFilterShim.exe is not in the effects folder, this file is required to run the filters.

PdnSig.png

Plugin Pack | PSFilterPdn | Content Aware Fill | G'MICPaint Shop Pro Filetype | RAW Filetype | WebP Filetype

The small increase in performance you get coding in C++ over C# is hardly enough to offset the headache of coding in the C++ language. ~BoltBait

 

Link to comment
Share on other sites

Transparency is now displayed in the filter preview and the filters will now show the selection.

Multiple other bugs fixed.

File version updated to 1.0.3.0. ;)

PdnSig.png

Plugin Pack | PSFilterPdn | Content Aware Fill | G'MICPaint Shop Pro Filetype | RAW Filetype | WebP Filetype

The small increase in performance you get coding in C++ over C# is hardly enough to offset the headache of coding in the C++ language. ~BoltBait

 

Link to comment
Share on other sites

A bug in the checker board rendering and multiple other bugs fixed.

File version updated to 1.0.3.1.

PdnSig.png

Plugin Pack | PSFilterPdn | Content Aware Fill | G'MICPaint Shop Pro Filetype | RAW Filetype | WebP Filetype

The small increase in performance you get coding in C++ over C# is hardly enough to offset the headache of coding in the C++ language. ~BoltBait

 

Link to comment
Share on other sites

  • 3 weeks later...

All filters will now reshow the parameters dialog when used through the "Repeat Effect" command.

The FilterMeister filters should now display the image correctly when zoomed in, multiple other bugs fixed.

File version updated to 1.0.3.2.

PdnSig.png

Plugin Pack | PSFilterPdn | Content Aware Fill | G'MICPaint Shop Pro Filetype | RAW Filetype | WebP Filetype

The small increase in performance you get coding in C++ over C# is hardly enough to offset the headache of coding in the C++ language. ~BoltBait

 

Link to comment
Share on other sites

All filters will now reshow the parameters dialog when used through the "Repeat Effect" command.

Why on Earth would you do that? The whole point of Repeat Effect is that it repeats without showing the UI again :noes:

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

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

forumSig_bmwE60.jpg

Link to comment
Share on other sites

Why on Earth would you do that? The whole point of Repeat Effect is that it repeats without showing the UI again :noes:

The filter's parameters were not restored correctly on many filters so they would crash, although in the WinForms test project that this plugin is based on the code is the same and the "Repeat Effect" command works perfectly. :/

PdnSig.png

Plugin Pack | PSFilterPdn | Content Aware Fill | G'MICPaint Shop Pro Filetype | RAW Filetype | WebP Filetype

The small increase in performance you get coding in C++ over C# is hardly enough to offset the headache of coding in the C++ language. ~BoltBait

 

Link to comment
Share on other sites

Good work, Paint.Net need this plug-in, with it Paint.NET becomes the second non adobe application which support 64 bit photoshop plug-ins, until now there is only one, Photoline.

I'm the developer of Ximagic photoshop plugins.

After publishing the last version two days ago, I discover this pdn plugin and test it (with ver 1.0.3.2).

64 bit mode works great, but I've found what seems to be a bug in the 32 bit mode.

  • If the plug-in don't specify which assemblies it need (using ISOLATION_AWARE_ENABLED=0) then the UI don't use the XP style but the classic windows one. This is what the last version of the plug-ins do.
  • If the plug-in isolate itself from the host and specify the assemblies (using ISOLATION_AWARE_ENABLED=1) which is the recommended MS approach, then PDN crash. This is what the next version of the plug-ins will do. This is the only way to use always XP style, even if the plug-in don't load it (like The GIMP or Paint.NET+PSFilterPdn 32 bits).

The manifest dependency is the following

manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'

And the pdncrash.log content is:

Se creó este archivo de texto porque se bloqueó Paint.NET.

Por favor, envíe este archivo a crashlog@getpaint.net para que podamos diagnosticar y resolver el problema.

Application version: Paint.NET v3.5.8 (Final Release compilación 3.58.4081.24580)

Time of crash: 01/04/2011 13:01:32

Application uptime: 00:05:49.4190000

Install directory: n/a

Current directory: C:\Program Files\Paint.NET

OS Version: 6.0.6001.65536 Service Pack 1 Workstation x64

.NET version: CLR 2.0.50727.3053 x86, FX 2.0 (rtm sp1 sp2) 3.0 (rtm sp1 sp2) 3.5 (rtm sp1 sp1_CP)

Processor: 4x "Intel® Core™2 Quad CPU Q6600 @ 2.40GHz" @ ~2400MHz (DEP, SSE, SSE2, SSE3, SSSE3), fps=0x1

Physical memory: 4093 MB

UI DPI: 96,00 dpi (1,00x scale)

UI Theme: Aero/Aero (Aero.msstyles)

Updates: err, 31/03/2011

Locale: pdnr.c: es-ES, hklm: n/a, hkcu: n/a, cc: es-ES, cuic: es-ES

Managed assemblies:

mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @ C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll

PaintDotNet, Version=3.58.4081.24586, Culture=neutral, PublicKeyToken=null @ C:\Program Files\Paint.NET\PaintDotNet_32.exe

System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @ C:\Windows\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll

PaintDotNet.SystemLayer, Version=3.58.4081.24580, Culture=neutral, PublicKeyToken=null @ C:\Program Files\Paint.NET\PaintDotNet.SystemLayer.dll

System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @ C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll

System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @ C:\Windows\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll

PaintDotNet.Base, Version=3.58.4081.24574, Culture=neutral, PublicKeyToken=null @ C:\Program Files\Paint.NET\PaintDotNet.Base.dll

WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 @ C:\Windows\assembly\GAC_MSIL\WindowsBase\3.0.0.0__31bf3856ad364e35\WindowsBase.dll

System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @ C:\Windows\assembly\GAC_MSIL\System.Core\3.5.0.0__b77a5c561934e089\System.Core.dll

PaintDotNet.Resources, Version=3.58.4081.24580, Culture=neutral, PublicKeyToken=null @ C:\Program Files\Paint.NET\PaintDotNet.Resources.dll

PaintDotNet.Core, Version=3.58.4081.24581, Culture=neutral, PublicKeyToken=null @ C:\Program Files\Paint.NET\PaintDotNet.Core.dll

PaintDotNet.Data, Version=3.58.4081.24584, Culture=neutral, PublicKeyToken=null @ C:\Program Files\Paint.NET\PaintDotNet.Data.dll

System.Windows.Forms.resources, Version=2.0.0.0, Culture=es, PublicKeyToken=b77a5c561934e089 @ C:\Windows\assembly\GAC_MSIL\System.Windows.Forms.resources\2.0.0.0_es_b77a5c561934e089\System.Windows.Forms.resources.dll

PaintDotNet.Effects, Version=3.58.4081.24585, Culture=neutral, PublicKeyToken=null @ C:\Program Files\Paint.NET\PaintDotNet.Effects.dll

PaintDotNet.SystemLayer.Native.x86, Version=3.58.4079.4951, Culture=neutral, PublicKeyToken=null @ C:\Program Files\Paint.NET\PaintDotNet.SystemLayer.Native.x86.dll

msvcm90, Version=9.0.30729.4148, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @ C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_5090ab56bcba71c2\msvcm90.dll

mscorlib.resources, Version=2.0.0.0, Culture=es, PublicKeyToken=b77a5c561934e089 @ C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll

PSFilterPdn, Version=1.0.3.2, Culture=neutral, PublicKeyToken=null @ C:\Program Files\Paint.NET\Effects\PSFilterPdn.dll

System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @ C:\Windows\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll

Native modules:

C:\Program Files\Paint.NET\PaintDotNet_32.exe, version='3.58.4081.24586'

C:\Windows\SysWOW64\ntdll.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\system32\mscoree.dll, version='4.0.31106.0 (Main.031106-0000)'

C:\Windows\syswow64\KERNEL32.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\syswow64\ADVAPI32.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\syswow64\RPCRT4.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\syswow64\Secur32.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\syswow64\SHLWAPI.dll, version='6.0.6000.16386 (vista_rtm.061101-2205)'

C:\Windows\syswow64\GDI32.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\syswow64\USER32.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\syswow64\msvcrt.dll, version='7.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\system32\IMM32.DLL, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\syswow64\MSCTF.dll, version='6.0.6000.16386 (vista_rtm.061101-2205)'

C:\Windows\syswow64\LPK.DLL, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\syswow64\USP10.dll, version='1.0626.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6001.18000_none_5cdbaa5a083979cc\comctl32.dll, version='6.10 (vista_rtm.061101-2205)'

C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll, version='2.0.50727.3053 (netfxsp.050727-3000)'

C:\Windows\WinSxS\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4053_none_d08d7da0442a985d\MSVCR80.dll, version='8.00.50727.4053'

C:\Windows\syswow64\shell32.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\syswow64\ole32.dll, version='6.0.6000.16386 (vista_rtm.061101-2205)'

C:\Windows\assembly\NativeImages_v2.0.50727_32\mscorlib\9adb89fa22fd5b4ce433b5aca7fb1b07\mscorlib.ni.dll, version='2.0.50727.3053 (netfxsp.050727-3000)'

C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorsec.dll, version='2.0.50727.3053 (netfxsp.050727-3000)'

C:\Windows\system32\WINTRUST.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\system32\CRYPT32.dll, version='6.0.6000.16386 (vista_rtm.061101-2205)'

C:\Windows\system32\MSASN1.dll, version='6.0.6000.16386 (vista_rtm.061101-2205)'

C:\Windows\system32\USERENV.dll, version='6.0.6000.16386 (vista_rtm.061101-2205)'

C:\Windows\syswow64\imagehlp.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.6001.18000_none_886786f450a74a05\COMCTL32.dll, version='5.82 (vista_rtm.061101-2205)'

C:\Windows\system32\rsaenh.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\syswow64\psapi.dll, version='6.0.6000.16386 (vista_rtm.061101-2205)'

C:\Windows\system32\ncrypt.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\system32\BCRYPT.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\system32\NTMARTA.DLL, version='6.0.6000.16386 (vista_rtm.061101-2205)'

C:\Windows\syswow64\WLDAP32.dll, version='6.0.6000.16386 (vista_rtm.061101-2205)'

C:\Windows\syswow64\WS2_32.dll, version='6.0.6000.16386 (vista_rtm.061101-2205)'

C:\Windows\syswow64\NSI.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\system32\SAMLIB.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\system32\GPAPI.dll, version='6.0.6000.16386 (vista_rtm.061101-2205)'

C:\Windows\system32\slc.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\system32\cryptnet.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\system32\SensApi.dll, version='6.0.6000.16386 (vista_rtm.061101-2205)'

C:\Windows\system32\NETAPI32.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\system32\Cabinet.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\system32\uxtheme.dll, version='6.0.6000.16386 (vista_rtm.061101-2205)'

C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorjit.dll, version='2.0.50727.3053 (netfxsp.050727-3000)'

C:\Windows\assembly\NativeImages_v2.0.50727_32\System\aa7926460a336408c8041330ad90929d\System.ni.dll, version='2.0.50727.3053 (netfxsp.050727-3000)'

C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Core\4cb01a1063e99bd543ca34547e28bd44\System.Core.ni.dll, version='3.5.30729.1 built by: SP'

C:\Windows\assembly\NativeImages_v2.0.50727_32\WindowsBase\400510870f710fd409ee7fc71b4a69aa\WindowsBase.ni.dll, version='3.0.6920.1453 built by: NetFX'

C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Drawing\6978f2e90f13bc720d57fa6895c911e2\System.Drawing.ni.dll, version='2.0.50727.3053 (netfxsp.050727-3000)'

C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Windows.Forms\9a254c455892c02355ab0ab0f0727c5b\System.Windows.Forms.ni.dll, version='2.0.50727.3053 (netfxsp.050727-3000)'

C:\Windows\assembly\NativeImages_v2.0.50727_32\PaintDotNet.Base\1e266e521e32ca0d84c4a59248066e25\PaintDotNet.Base.ni.dll, version='3.58.4081.24574'

C:\Windows\assembly\NativeImages_v2.0.50727_32\PaintDotNet.SystemL#\136b54551a4775cefdd076e4cf34d6e9\PaintDotNet.SystemLayer.ni.dll, version='3.58.4081.24580'

C:\Windows\assembly\NativeImages_v2.0.50727_32\PaintDotNet.SystemL#\7fe2040d485887647dc31c5025c10df2\PaintDotNet.SystemLayer.Native.x86.ni.dll, version='3.58.0.0'

C:\Windows\assembly\NativeImages_v2.0.50727_32\Interop.WIA\efca70ca873ab8817754464e26c18833\Interop.WIA.ni.dll, version='1.0.0.0'

C:\Program Files\Paint.NET\PaintDotNet.Resources.dll, version='3.58.4081.24580'

C:\Program Files\Paint.NET\PaintDotNet.Core.dll, version='3.58.4081.24581'

C:\Program Files\Paint.NET\Native.x86\PaintDotNet.Native.x86.dll, version='3.58.0.0'

C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_5090ab56bcba71c2\MSVCR90.dll, version='9.00.30729.4148'

C:\Windows\WinSxS\x86_microsoft.vc90.openmp_1fc8b3b9a1e18e3b_9.0.30729.4148_none_80b7c8a91e9dd16a\VCOMP90.DLL, version='9.00.30729.4148 built by: QFE'

C:\Program Files\Paint.NET\PaintDotNet.Data.dll, version='3.58.4081.24584'

C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.6001.18000_none_9e752e5ac9c619f3\gdiplus.dll, version='5.2.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\assembly\GAC_MSIL\System.Windows.Forms.resources\2.0.0.0_es_b77a5c561934e089\System.Windows.Forms.resources.dll, version='2.0.50727.3053 (netfxsp.050727-3000)'

C:\Program Files\Paint.NET\PaintDotNet.Effects.dll, version='3.58.4081.24585'

C:\Program Files\Paint.NET\PaintDotNet.SystemLayer.Native.x86.dll, version='3.58.0.0'

C:\Windows\syswow64\OLEAUT32.dll, version='6.0.6001.18000'

C:\Windows\WinSxS\x86_microsoft.vc90.atl_1fc8b3b9a1e18e3b_9.0.30729.4148_none_51ca66a2bbe76806\ATL90.DLL, version='9.00.30729.4148'

C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_5090ab56bcba71c2\msvcm90.dll, version='9.00.30729.4148'

C:\Windows\assembly\GAC_MSIL\mscorlib.resources\2.0.0.0_es_b77a5c561934e089\mscorlib.resources.dll, version='2.0.50727.3053 (netfxsp.050727-3000)'

C:\Windows\system32\wtsapi32.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\system32\WINSTA.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\system32\version.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\system32\dwmapi.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\syswow64\SetupApi.dll, version='6.0.6001.18000 (longhorn_rtm.080118-1840)'

C:\Windows\system32\dciman32.dll, version='6.0.6000.16386 (vista_rtm.061101-2205)'

C:\Program Files\Paint.NET\Effects\PSFilterPdn.dll, version='1.0.3.2'

C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Xml\36f3953f24d4f0b767bf172331ad6f3e\System.Xml.ni.dll, version='2.0.50727.3053 (netfxsp.050727-3000)'

C:\Windows\Microsoft.NET\Framework\v2.0.50727\diasymreader.dll, version='8.0.50727.3053 (netfxsp.050727-3000)'

C:\Windows\system32\RichEd20.DLL, version='5.31.23.1228'

C:\Windows\system32\apphelp.dll, version='6.0.6000.16386 (vista_rtm.061101-2205)'

Exception details:

System.FormatException: La cadena de entrada no tiene el formato correcto.

en System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)

en System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)

en PSFilterPdn.PsFilterPdnConfigDialog.UpdateProxyProgress(Object sender, DataReceivedEventArgs e)

en System.Diagnostics.Process.OutputReadNotifyUser(String data)

en System.Diagnostics.AsyncStreamReader.FlushMessageQueue()

en System.Diagnostics.AsyncStreamReader.GetLinesFromStringBuilder()

en System.Diagnostics.AsyncStreamReader.ReadBuffer(IAsyncResult ar)

en System.Runtime.Remoting.Messaging.AsyncResult.SyncProcessMessage(IMessage msg)

en System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)

en System.Runtime.Remoting.Proxies.AgileAsyncWorkerItem.DoAsyncCall()

en System.Runtime.Remoting.Proxies.AgileAsyncWorkerItem.ThreadPoolCallBack(Object o)

en System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(Object state)

en System.Threading.ExecutionContext.runTryCode(Object userData)

en System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)

en System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)

en System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)

en System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(_ThreadPoolWaitCallback tpWaitCallBack)

en System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)

------------------------------------------------------------------------------

Hope it helps

Link to comment
Share on other sites

Good work, Paint.Net need this plug-in, with it Paint.NET becomes the second non adobe application which support 64 bit photoshop plug-ins, until now there is only one, Photoline.

I'm the developer of Ximagic photoshop plugins.

After publishing the last version two days ago, I discover this pdn plugin and test it (with ver 1.0.3.2).

64 bit mode works great, but I've found what seems to be a bug in the 32 bit mode.

  • If the plug-in don't specify which assemblies it need (using ISOLATION_AWARE_ENABLED=0) then the UI don't use the XP style but the classic windows one. This is what the last version of the plug-ins do.
  • If the plug-in isolate itself from the host and specify the assemblies (using ISOLATION_AWARE_ENABLED=1) which is the recommended MS approach, then PDN crash. This is what the next version of the plug-ins will do. This is the only way to use always XP style, even if the plug-in don't load it (like The GIMP or Paint.NET+PSFilterPdn 32 bits).

The manifest dependency is the following

manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'

PSFilterShim now loads filters with XP style controls and the FormatException should now be caught.

File version updated to 1.0.3.3. ;)

PdnSig.png

Plugin Pack | PSFilterPdn | Content Aware Fill | G'MICPaint Shop Pro Filetype | RAW Filetype | WebP Filetype

The small increase in performance you get coding in C++ over C# is hardly enough to offset the headache of coding in the C++ language. ~BoltBait

 

Link to comment
Share on other sites

PSFilterShim now loads filters with XP style controls and the FormatException should now be caught.

File version updated to 1.0.3.3. ;)

Thanks for your quick answer.

Now the 32 bit version works OK.

But since my previous message, I've found a problem in the 64 bit version.

After the first plug-in invocation, which works OK, the next invocation always crash, it doesn't matter if it is the same plug-in or another one (I'm testing only with my plug-ins).

After some time analyzing the problem, finally I've found the source of the error.

It is not clear initially because pdncrash only detect a bad memory exception, and it takes more than usual because I can't get visual studio debugger work in this configuration, I suppose there is a problem when managed code call unmanaged code.

The values of inData, inRowBytes, outData and outRowBytes received in FilterRecord, when the selector is filterSelectorContinue are all zero (and wrong) in the second invocation

The values of filterRect, inRect and outRect are all OK.

Closing the plug-in selection screen of PSFilterPdn between plug-in invocations don't solve the problem.

Closing the image and opening it again before the second invocation don't solve the problem.

Closing the image and opening a different one before the second invocation, do solve the problem.

I hope the explanation helps.

Link to comment
Share on other sites

Great, now both versions 32 and 64 work OK.

Excuse me :(, but I've found another bug, although it is less serious than the previous ones, and depending on the ps plug-in used can't even be detected.

It seems PSFilterPdn don't send the selection mask to the ps plug-in, instead it crop the image to the minimal rectangle which include the selection inside.

  • This method is wrong if the plug-in take into account values outside the selection to calculate the result inside it, something that is very usual.
  • This method could be valid for rectangular selections, if the previous problem doesn't exits, but not for non rectangular selections.

There are other undesirable consequences, f.i. if the plug-in get the selection mask, it can show the preview with real result, with the selected area filtered and the non selected area unfiltered, something impossible if the image is simply cropped.

If you need to test the selection mask, you could use my GrayDither plug-in, the preview take into account the mask, and because the filtered area becomes grayscale it is easier to differentiate it.

Link to comment
Share on other sites

Great, now both versions 32 and 64 work OK.

Excuse me :(, but I've found another bug, although it is less serious than the previous ones, and depending on the ps plug-in used can't even be detected.

It seems PSFilterPdn don't send the selection mask to the ps plug-in, instead it crop the image to the minimal rectangle which include the selection inside.

  • This method is wrong if the plug-in take into account values outside the selection to calculate the result inside it, something that is very usual.
  • This method could be valid for rectangular selections, if the previous problem doesn't exits, but not for non rectangular selections.

There are other undesirable consequences, f.i. if the plug-in get the selection mask, it can show the preview with real result, with the selected area filtered and the non selected area unfiltered, something impossible if the image is simply cropped.

If you need to test the selection mask, you could use my GrayDither plug-in, the preview take into account the mask, and because the filtered area becomes grayscale it is easier to differentiate it.

The plugins have access to the entire image, GrayDither never asks for anything outside the filter rectangle so it would not get the rest of the image.

As for the selection masking I have tried to implement this in the past and it has never worked correctly. :/

PdnSig.png

Plugin Pack | PSFilterPdn | Content Aware Fill | G'MICPaint Shop Pro Filetype | RAW Filetype | WebP Filetype

The small increase in performance you get coding in C++ over C# is hardly enough to offset the headache of coding in the C++ language. ~BoltBait

 

Link to comment
Share on other sites

The plugins have access to the entire image, GrayDither never asks for anything outside the filter rectangle so it would not get the rest of the image.

Yes it is true, this is a plug-in bug, which I'm not aware.

The reason why this bug was unnoticed is that FilterRect is in fact replaced time ago with the mask even for rectangular selections, and it is equal to the image size, this is valid for Photoshop, PSP, Photoline, Photobie, etc.

AFAIK at present there are only 2 plug-in hosts which use the filterRect non equal to imageSize, pspi(The Gimp) and PSFilterPdn.

I suppose the source of the confusion is that there is something wrong/false in the Photoshop SDK docs.

From sdk manual in the description of the FilterRecord fields (f.i. the last freely usable sdk manual 3.0.4)

"haveMask: This field is set TRUE if and only if a non–rectangular area has been selected."

The mask is used for any selection rectangular or not, this is true for Photoshop and the other editors that I mention previously.

As for the selection masking I have tried to implement this in the past and it has never worked correctly. :/

You need only an array of bytes with 0 or 255 values and the size of the image, and set the filterRect equal to the imageSize.

Forgetting the filterRect makes it easier. ;)

Link to comment
Share on other sites

AFAIK at present there are only 2 plug-in hosts which use the filterRect non equal to imageSize, pspi(The Gimp) and PSFilterPdn.

Photoshop does seem to set the filterRect for certain plugins, e.g. Color Washer but I am unable to determine what logic it uses to decide if it sets the filterRect or not.

You need only an array of bytes with 0 or 255 values and the size of the image, and set the filterRect equal to the imageSize.

Forgetting the filterRect makes it easier.

One of the problems with my previous implementation was if the selection is non-rectangular it would not display the selection correctly, for example if the selection was an oval FilterForge would display it as a series of blocks.

PdnSig.png

Plugin Pack | PSFilterPdn | Content Aware Fill | G'MICPaint Shop Pro Filetype | RAW Filetype | WebP Filetype

The small increase in performance you get coding in C++ over C# is hardly enough to offset the headache of coding in the C++ language. ~BoltBait

 

Link to comment
Share on other sites

Photoshop does seem to set the filterRect for certain plugins, e.g. Color Washer but I am unable to determine what logic it uses to decide if it sets the filterRect or not.

I try playing with the PiPL of the plug-ins but there are no values for which I can get the FilterRect not equal to the image size.

Otherwise in the SDK manual (3.0.4) when talking about filter cases, says that selection comes as mask data, against what tell in the filter parameters section.

2=filterCaseFlatImageWithSelection No transparency data, but a selection may be present. The selection will be presented as mask data."

Unfortunatelly I can't help you here.

Link to comment
Share on other sites

  • 3 weeks later...

The selection mask is now used instead of the filterRect to tell the filter the selection.

File version updated to 1.0.3.5.

PdnSig.png

Plugin Pack | PSFilterPdn | Content Aware Fill | G'MICPaint Shop Pro Filetype | RAW Filetype | WebP Filetype

The small increase in performance you get coding in C++ over C# is hardly enough to offset the headache of coding in the C++ language. ~BoltBait

 

Link to comment
Share on other sites

Did you discover the logic behind ?

Does it work also for ColorWasher ?

I have not been able to discover the logic that Photoshop uses, and as far as I can tell only filters built with Filter Factory or Filter Meister clip the image displayed to the selection's bounding rectangle.

The selection masking does not work with ColorWasher even if it was told the bounds of the selection, so the resulting image just gets clipped to the selection after the filter is done running.

PdnSig.png

Plugin Pack | PSFilterPdn | Content Aware Fill | G'MICPaint Shop Pro Filetype | RAW Filetype | WebP Filetype

The small increase in performance you get coding in C++ over C# is hardly enough to offset the headache of coding in the C++ language. ~BoltBait

 

Link to comment
Share on other sites

  • 1 month later...

The "Repeat Effect" command should now work correctly for most filters.

It will reshow the dialog for any filter that does not use the FilterRecord.parameters handle (e.g. Filter Factory), or any filter that relies on Photoshop's scripting to override their parameters as this is not currently implemented (e.g. Ximagic's GrayDither).

File version updated to 1.0.3.6. ;)

PdnSig.png

Plugin Pack | PSFilterPdn | Content Aware Fill | G'MICPaint Shop Pro Filetype | RAW Filetype | WebP Filetype

The small increase in performance you get coding in C++ over C# is hardly enough to offset the headache of coding in the C++ language. ~BoltBait

 

Link to comment
Share on other sites

  • 3 weeks later...

Is it possible for someone to help me with this plugin? I'm not sure what I am missing. I have placed this in my Effects folder (and the other plugin from the other company) and I don't even show a filter screen. I added the PDNFF plugin also, and I still do not show a filter screen or option. I believe I am missing something but can't quite figure out what it would be. I looked for a readme file and didn't see one of those either. Thank you.

Link to comment
Share on other sites

Is it possible for someone to help me with this plugin? I'm not sure what I am missing. I have placed this in my Effects folder (and the other plugin from the other company) and I don't even show a filter screen. I added the PDNFF plugin also, and I still do not show a filter screen or option. I believe I am missing something but can't quite figure out what it would be. I looked for a readme file and didn't see one of those either. Thank you.

What is the name of the filter you are trying to run?

Is the plugin showing up in the list of filters in PSFilterPdn?

PdnSig.png

Plugin Pack | PSFilterPdn | Content Aware Fill | G'MICPaint Shop Pro Filetype | RAW Filetype | WebP Filetype

The small increase in performance you get coding in C++ over C# is hardly enough to offset the headache of coding in the C++ language. ~BoltBait

 

Link to comment
Share on other sites

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...