Jump to content

BoltBait

Administrator
  • Posts

    15,728
  • Joined

  • Last visited

  • Days Won

    405

Everything posted by BoltBait

  1. Right-Click on the dll in explorer and choose "properties". Look at the bottom of the General tab and see if there is an "unblock" button. If there is, click it, then click OK.
  2. The only one I absolutely refuse to let you use is my Halo effect. I would like to publicly appologize for writing that one. Oh, and don't bother putting the arrow one in there either. I have a feeling that the next release of PdN will be able to draw arrows. Will you be including my custom palette file?
  3. Forget everything you know about programming and start over with C#. And, no, I am not working on this. There just aren't enough hours in a day for me to work on all the projects that interest me. I will let this bounce around in the back of my head for a while and if it bubbles up to the top, I'll let you know.
  4. True, but I think barkbark00 was really asking for a better sampling method. Now, if you leave some space around the image before you run the effect, the sampling method should create a sort of antialiasing. The only problem in this case is when the image repeats.
  5. Rick already told you... Use src.GetBilinearSample(srcXd, srcYd); int Amount1=0; //[-200,200]Horizontal cylinder factor int Amount2=0; //[-200,200]Vertical cylinder factor void Render(Surface dst, Surface src, Rectangle rect) { PdnRegion selectionRegion = EnvironmentParameters.GetSelection(src.Bounds); Rectangle selection = this.EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt(); float RadiusY =(float)Amount1 / 100.0f; float RadiusX =(float)Amount2 / 100.0f; long SizeX = (long)(selection.Right - selection.Left); long SizeY = (long)(selection.Bottom - selection.Top); long CenterX = (long)((SizeX / 2.0f)+selection.Left); long CenterY = (long)((SizeY / 2.0f)+selection.Top); for(int y = rect.Top; y { for (int x = rect.Left; x { if (selectionRegion.IsVisible(x, y)) { float AngleY = (float)Math.Asin(2.0f*(float)(y - CenterY)/(float)SizeY); float srcXd = (float)(Math.Cos(AngleY) * RadiusY * CenterY)+x; if (srcXd if (srcXd > SizeX) srcXd-=SizeX; float AngleX = (float)Math.Acos(2.0f*(float)(x - CenterX)/(float)SizeX); float srcYd = (float)(Math.Sin(AngleX) * RadiusX * CenterX)+y; if (srcYd if (srcYd > SizeY) srcYd-=SizeY; dst[x,y] = src.GetBilinearSample(srcXd, srcYd); } } } }
  6. I tried to go to the link directly and IE told me that I needed to login to the web site to see the image (403 error). UH, I would say, slow down. Do it right. Don't be in a rush to push something substandard out the door. People will wait. Along with what Rick said, it should detect if PdN is running and warn you to close it before attempting to install plugins.
  7. It depends. If you just zip everything up... no. If you make a real professional installer... sure.
  8. That's on BoltBait.com (which hasn't been updated). Check here: http://boltbait.googlepages.com/
  9. The checkerboard pattern lets you know that the area is transparent (when saved as a GIF or PNG file).
  10. When using the line/curve tool :LineCurveTool: be sure to right-click and drag the middle points of the line in order to turn it into a Bezier curve. This will give you a smoother curve to your line.
  11. That is true... except for irregular selections. If you don't check, you'll get issues like this: Which I ran across when developing the Gradient plugin that I wrote. Besides, you're the one that gave me the code in the first place.
  12. I would guess: pdnbench, codelab, and the samples that come with codelab? (I don't see Tom's name on the list.) BTW, I've written 16 different plugins... Which ones were you considering using? (FYI, here's the list.) Also, I would encourage you to write an install package instead of a simple zip file. This way, users could select the ones they want and the installer would make sure they were being installed into the proper directory.
  13. As an example, I edited them into this tutorial: http://paintdotnet.12.forumer.com/viewtopic.php?t=3172
  14. BuzzKill!!!! I'm in ur Paint Dot Net... eatin' ur cookie.
  15. You'll need to update your plugin for Paint.NET 3.05. Change all references of PdnLib.dll to PaintDotNet.Core.dll BTW, I would also add references to PaintDotNet.Data.dll so that you can have access to the blending ops.
  16. Hehe. CodeLab is a C# compiler...
  17. Like this: http://paintdotnet.12.forumer.com/viewtopic.php?t=3790 By the way, your sig is really annoying. Make it stop!
  18. Like this: http://paintdotnet.12.forumer.com/viewtopic.php?t=3172
  19. Soften Portrait Effect I'm still learning how to create complex effect filters for Paint.NET. This is the first one that I wrote that combines preexisting effects. After I wrote this one, I did the Ink Sketch effect. The Idea The idea for this plugin came from belman92's post here. I thought that it would be easy to automate the steps that are sometimes used to make portraits look softer and more professional. You can use this on other pictures, but it really is meant for portraits. It adds a little brown to smooth out skin but not too much detail is lost. Here is an example pic of my lovely wife: <snip demonstration photo> The Effect DLL NOTE: This effect is now included in Paint.NET. If you have upgraded to Paint.NET 3.10 or greater, you do not need to download this effect... you already have it! Instructions for Use The best way to use this is to follow these steps: 1. Open your graphic. 2. Click the Effects > Portrait menu. 3. Adjust the sliders for the desired effect. More Info As always, more information can be found here: http://boltbait.googlepages.com/portrait Source Code To understand this code, first read the Ink Sketch thread. Go ahead, I'll wait. Back? OK, here ya go: /* PortraitEffect.cs Copyright (c) 2007 David Issel Contact Info: BoltBait@hotmail.com http://www.BoltBait.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ using System; using System.Collections; using System.Drawing; using PaintDotNet; using PaintDotNet.Effects; namespace PortraitEffect { public class EffectPlugin : PaintDotNet.Effects.Effect { public static string StaticName { get { return "Soften Portrait"; } } public static Bitmap StaticIcon { get { return new Bitmap(typeof(EffectPlugin), "EffectPluginIcon.png"); } } private BlurEffect blurEffect = new BlurEffect(); private UnaryPixelOps.Desaturate desaturateOp = new UnaryPixelOps.Desaturate(); private SepiaEffect sepiaEffect = new SepiaEffect(); private BrightnessAndContrastAdjustment bacAdjustment = new BrightnessAndContrastAdjustment(); private UserBlendOps.OverlayBlendOp OverlayOp = new UserBlendOps.OverlayBlendOp(); private UnaryPixelOp levels; public override unsafe void Render(EffectConfigToken parameters, RenderArgs dstArgs, RenderArgs srcArgs, Rectangle[] rois, int startIndex, int length) { ThreeAmountsConfigToken tacd = (ThreeAmountsConfigToken)parameters; float RedAdjust = 1.0f + ((float)tacd.Amount3 / 100.0f); float BlueAdjust = 1.0f - ((float)tacd.Amount3 / 100.0f); AmountEffectConfigToken blurToken = new AmountEffectConfigToken(tacd.Amount1 * 3); BrightnessAndContrastAdjustmentConfigToken bacToken = new BrightnessAndContrastAdjustmentConfigToken(tacd.Amount2, -tacd.Amount2/2); this.blurEffect.Render(blurToken, dstArgs, srcArgs, rois, startIndex, length); this.bacAdjustment.Render(bacToken, dstArgs, dstArgs, rois, startIndex, length); for (int i = startIndex; i < startIndex + length; ++i) { Rectangle roi = rois[i]; for (int y = roi.Top; y < roi.Bottom; ++y) { ColorBgra* srcPtr = srcArgs.Surface.GetPointAddress(roi.Left, y); ColorBgra* dstPtr = dstArgs.Surface.GetPointAddress(roi.Left, y); for (int x = roi.Left; x < roi.Right; ++x) { ColorBgra srcGrey = this.desaturateOp.Apply(*srcPtr); srcGrey.R = Utility.ClampToByte((int)((float)srcGrey.R * RedAdjust)); srcGrey.B = Utility.ClampToByte((int)((float)srcGrey.B * BlueAdjust)); ColorBgra mypixel = this.OverlayOp.Apply(srcGrey, *dstPtr); *dstPtr = mypixel; ++srcPtr; ++dstPtr; } } } } public override EffectConfigDialog CreateConfigDialog() { ThreeAmountsConfigDialog tacd = new ThreeAmountsConfigDialog(); tacd.Text = StaticName; tacd.Amount1Label = "Soften"; tacd.Amount1Minimum = 0; tacd.Amount1Maximum = 10; tacd.Amount1Default = 5; tacd.Amount2Label = "Lighting"; tacd.Amount2Minimum = -20; tacd.Amount2Maximum = 20; tacd.Amount2Default = 0; tacd.Amount3Label = "Warmth"; tacd.Amount3Minimum = 0; tacd.Amount3Maximum = 20; tacd.Amount3Default = 10; return tacd; } public EffectPlugin() : base(StaticName, StaticIcon, true) { } } } Note: This is NOT a codelab script!
×
×
  • Create New...