Jump to content

BoltBait

Administrator
  • Posts

    15,730
  • Joined

  • Last visited

  • Days Won

    405

Everything posted by BoltBait

  1. How to install my plugin pack: 1) Click the big blue button in the previous message. The plugin pack .zip file will download to your "Download" directory. 2) Right-click on the .zip file and choose "Extract all..." from the menu. 3) Click the "Extract" button. 4) Once the extracted file is shown, double-click on it to run it. 5) You may be prompted by Windows to protect you. This is normal, just click on the "More info" link and then click the "Run anyway" button. 6) Once the installer runs, you should see the following screen: 7) Click the checkbox to agree to the terms and conditions, then click the "Install Everything!" button. A few moments later, you should have all my plugins, palettes, and shapes installed on your system. Enjoy! đź‘Ť If you are in an IT department and you'd like to install the BoltBait pack on all of your company's systems, there is a command line interface for just such a purpose: If none of these things work for you, there is a zip file full of just the effect plugins attached at the bottom of the first post.
  2. My system is clean. I just don't have a way to sign my installers. Reputable code signing costs over $500/year... so, I'm going to need LOTS more donations if I'm going to make that happen. I just MIGHT be able to get a discount code signer... they only cost $60/year. Investigating... https://codesigningstore.com/cheap-code-signing-certificates
  3. Tutorial: Removing dividing lines from your Visual Studio based Paint.NET Plugin! (This is written from the perspective of you already having written an effect as a vs project and you want to remove lines from it. CodeLab can create a Visual Studio project of a CodeLab script*, and from there you can follow this tutorial.) Paint.NET v5.0 really gave us plugin authors a TON of new toys. This version introduces a completely new type of effect pipeline, a GPU accelerated pipeline. And, most of these new toys are restricted to this new type of effect. However, Rick did give us 2 new features for classic effects: 1) the ability to organize our UI into sections by using tabs, and 2) the ability to clean up our UI by removing the horizontal dividers between controls--described below. Starting with Paint.NET v5.0, it is possible to remove the horizontal dividing lines from IndirectUI controls. Compare the Brightness / Contrast dialog boxes from Paint.NET v4.3.12 (left) and v5.0a (right): This is a built-in effect dialog box, but we can use the same technique to remove the dividing lines from our own plugins. It's easy: The box on the left was built with something like this in OnCreateConfigUI(): configUI.SetPropertyControlValue(PropertyNames.Brightness, ControlInfoPropertyNames.DisplayName, "Brightness"); configUI.SetPropertyControlValue(PropertyNames.Contrast, ControlInfoPropertyNames.DisplayName, "Contrast"); and the box on the right was built like this: configUI.SetPropertyControlValue(PropertyNames.Brightness, ControlInfoPropertyNames.DisplayName, "Brightness"); configUI.SetPropertyControlValue(PropertyNames.Brightness, ControlInfoPropertyNames.ShowHeaderLine, false); configUI.SetPropertyControlValue(PropertyNames.Contrast, ControlInfoPropertyNames.DisplayName, "Contrast"); configUI.SetPropertyControlValue(PropertyNames.Contrast, ControlInfoPropertyNames.ShowHeaderLine, false); We just need to tell IndirectUI not to show the header line for the desired controls.
  4. Tutorial: Adding Tabs to your Visual Studio based Paint.NET Plugin! (This is written from the perspective of you already having written an effect as a vs project and you want to add tabs to it. CodeLab can create a Visual Studio project of a CodeLab script*, and from there you can follow this tutorial.) Paint.NET v5.0 really gave us plugin authors a TON of new toys. This version introduces a completely new type of effect pipeline, a GPU accelerated pipeline. And, most of these new toys are restricted to this new type of effect. However, Rick did give us 2 new features for classic effects: 1) the ability to organize our UI into sections by using tabs--described below, and 2) the ability to clean up our UI by removing the horizontal dividers between controls. Here is an example of what a tab set looks like in Paint.NET v4.3.12 (left, without tabs) compared to v5.0 (right, with tabs): The very first thing you need to do is add a PropertyNames entry for your TabContainer, something like this: public enum PropertyNames { Amount1, Amount2, Amount3, Amount4, Amount5, TabContainer // add something here to name your tab set. } EDIT: Then, in OnCreatePropertyCollection() you need to add a new property for your tab container: props.Add(new TabContainerStateProperty(PropertyNames.TabContainer)); Just add this line along side the other properties you're creating. When writing an effect, you develop the following function to configure the UI based on the properties (controls) already defined: protected override ControlInfo OnCreateConfigUI(PropertyCollection props) In there, you generally have the following line of code to kick off the function: ControlInfo configUI = CreateDefaultConfigUI(props); This builds a default UI based on the controls previously defined in the OnCreatePropertyCollection() function. Basically, what it does for you is create a panel and place all of your controls in the panel in the order specified in the OnCreatePropertyCollection() function. Instead of building the default UI, we want to build a custom UI that has a tab set in it. So, let's comment out that line and make a new ControlInfo structure. At this point you need to decide if your effect is going to be a single tabset, or if you want additional controls and possibly a tabset to go along with them. If you want your UI to simply be a tabset and nothing more, you can create the following line: //ControlInfo configUI = CreateDefaultConfigUI(props); TabContainerControlInfo configUI = new TabContainerControlInfo((TabContainerStateProperty)props[PropertyNames.TabContainer]); If you wish to have multiple tabsets or controls outside of the tabset, create the following lines: //ControlInfo configUI = CreateDefaultConfigUI(props); PanelControlInfo panelControlInfo = new PanelControlInfo(); TabContainerControlInfo configUI = new TabContainerControlInfo((TabContainerStateProperty)props[PropertyNames.TabContainer]); This creates a Panel AND a TabContainer... which will be added to the Panel. Next, create a tabPage and add the controls to that page then add the tab page to the tab control: // First Tab TabPageControlInfo tabPage1 = new TabPageControlInfo(); tabPage1.Text = "Tab Title"; tabPage1.AddChildControl(PropertyControlInfo.CreateFor(props[PropertyNames.Amount1])); tabPage1.AddChildControl(PropertyControlInfo.CreateFor(props[PropertyNames.Amount2])); configUI.AddTab(tabPage1); Repeat for each tab page. (Note: you must use every control defined in "props" and a control must not appear more than once.) The rest of OnCreatePropertyCollection() remains the same. This is where the details of each control are described (control titles, etc.). If you did NOT create a panel control, simply return the tab container at the end of the function as was originally written: return configUI; } ...and you're done! If you DID create a panel, add the tabset to the panel. You can then add controls directly to the panel following the tabset: // Add tab set to the panel panelControlInfo.AddChildControl(configUI); // Controls below tab set panelControlInfo.AddChildControl(PropertyControlInfo.CreateFor(props[PropertyNames.Amount5])); The rest of OnCreatePropertyCollection() remains the same. This is where the details of each control are described (control titles, etc.). Finally, return the Panel at the end of the function: return panelControlInfo; } ...and you're done! If you want to know which tab is active during the Render function, you'll need to do one more thing: Create a global variable to hold the index of the active tab: int tabShowing; When the tab is switched, OnSetRenderInfo() is called. So, in the OnSetRenderInfo() function, populate that variable with the index of the active tab: tabShowing = token.GetProperty<TabContainerStateProperty>(PropertyNames.TabContainer).Value.SelectedTabIndex; That's it! In your Render() function, you can branch based on the value in the tabShowing variable. *Does not apply to the MS Store version of Paint.NET. You'll need to download the free, classic version of Paint.NET if you want to develop plugins in Visual Studio.
  5. Well, we do have a DICOM filetype plugin: https://forums.getpaint.net/topic/110997-dicom-filetype-plugin/
  6. CodeLab v6.7 (for Paint.NET v5.0+) Changes in Paint.NET v5.0 prevents older versions of CodeLab from running. So, if you want to develop plugins in Paint.NET v5.0 you'll need to download CodeLab from this thread. What's new: Visual hint to indicate when an item will/won't auto complete Rainbow Braces Color previews in tooltips and auto complete Summaries from Doc Comments No support for authoring GPU plugins just yet. Honestly, @toe_head2001 just made enough changes to get CodeLab back to a working state. We have TONS of plans for supporting all the new toys @Rick Brewster has given us plugin developers in Paint.NET v5.0 (such as tabs and the ability to write GPU accelerated plugins), but that's a long way off. We've been working on updating our own plugins first so that we can learn the new techniques required for the next phase of CodeLab. It has been a LONG journey and much progress has been made. Be patient and eventually CodeLab will be updated further. Download: https://boltbait.com/pdn/codelab
  7. BoltBait GPU Accelerated Plugin Pack (for Paint.NET v5.0+) NOTE: If you're looking for my plugin pack for Paint.NET v4.3.12, go here, or Paint.NET v3.5.11, go here. If you're in here downloading the 5.0 version of Paint.NET, you're probably familiar with my plugin pack. I have spent the better part of the last 6 months rewriting most of my plugins from scratch... taking advantage of all the new toys @Rick Brewster has given us plugin authors in Paint.NET v5.0. He has completely rewritten the Effect system within Paint.NET v5.0 (Don't worry, all your favorite classic effects will still work.) adding new capabilities for the IndirectUI system and providing access to the GPU so that our effects can run VERY fast! What's New: I have rewritten more than 25 of my plugins so that they will now be GPU accelerated! While I was in there, I also added cool new features. Be sure to check your favorite plugin! Download: Download Donate How to install these plugins. I'm going through a really tough financial time right now. So, any donation no matter how small would be very much welcome! Download Contents: The following effects have been GPU accelerated Adjustment > Black and White Plus Adjustment > Color Balance Adjustment > Combined Adjustments Adjustment > Transparency Artistic > Dream Fill > from Clipboard Fill > from File Object > Apply Alpha Mask Object > Bevel Object Object > Feather Object Object > Inner Shadow Object > Outline Object Object > Switch Alpha to Gray (This is Create Alpha Mask) Object > Switch Gray to Alpha Photo > Level Horizon / Plum Bob Photo > Meme Maker Photo > Photo Adjustments Photo > Remove Dust Photo > Vignette Plus Render > Calendar Creator Render > Flames Selection > Bevel Selection Selection > Blur Selection Edge Selection > Feather Selection Selection > Inner Shadow Selection > Outline Selection Text Formations > Text Fun Factory Object > Drop Shadow Plus The following effects are classic flavor* Adjustment > Hue / Sat+ Flip Horizontal Flip Vertical Artistic > Oil Paint+ Artistic > Pastel Blurs > Gaussian Blur+ Color > Complementary Colors Object > Paste Alpha Photo > Seam Carving Photo > Sharpen Classic Photo > Sharpen Landscape Render > Chart / Graph Render > Dimensions Render > Gradients Render > Grid / Checkerboard Render > Polygon / Stars Stylize > Edge Detect Classic Stylize > Floyd-Steinberg Dithering Outdated plugins removed from my pack Adjustment > Temperature / Tint (now built-in) Text Formations > Creative Text Pro (now Text Fun Factory) Text Formations > Outlined / Gradient Text (now Text Fun Factory) These can still be downloaded here! This pack also includes 57 shapes and 2 palettes. These are the ones I use. *Please post a vote for which of my "classic" effects you'd like to see GPU accelerated next. Screenshots of Various Effects: Outline Selection and Outline Object got some new features and the outlines look MUCH better than previous versions. Check out some of these new features: Bevel now has a shadow angle free choice and a hard edge option. Calendar Creator now has holiday highlighting. Enter your favorite birthdays! Many of my plugins utilize tabs for making the UI much smaller than before. For example, Text Fun Factory separates the UI into basic functions: The Photo > Level Horizon effect utilizes 2 tabs, one for marking the horizon and one for finalizing your image: Some old favorites have been rewritten for GPU acceleration: Enjoy! Also, for you luddites that refuse to use the installer, here's a zip file with all the DLL's in it: BoltBaitPack611DLLs.zip How to install Paint.NET plugins. NO SHAPES FOR YOU! How about giving this post an up vote ♥️?
  8. Yes, sorry, they are always lossless. And, .PDN files are self-contained. They don't require the original files to exist in order to open them. Please note: If a .PDN file gets corrupted in any way (by a bad HD read during a copy operation, for example) the entire contents will be lost. Please be careful and verify your copies.
  9. First, I would backup everything! Second, .PDN files can be saved as lossless, that means each layer will be a perfect copy. If you have the ZIP Archive plugin, you can use it to recreate all of your .PNG files if you have one stored per layer. However, what you lose by doing this is the .PNG metadata (so, your camera settings per file, etc.).
  10. Things to check: Make sure the right layer is selected Make sure the area you're trying to modify isn't covered in a higher layer Make sure the layer is visible (check box is checked) Make sure there isn't an active selection elsewhere (Press Ctrl+D before continuing) Make sure the layer has an appropriate blend mode applied If using the paint brush/pencil, make sure the blending mode on the tool is set to normal or overwrite Make sure your video drivers are updated
  11. Right-clicking with the pencil tool gives you the secondary color. So, just put your transparent color into your secondary slot, change your pencil tool to "Overwrite" blending and you're all set:
  12. The "22H2" update should NOT be considered optional.
  13. Yes, if you have my plugin pack installed. Adjustments > Hue / Sat+
  14. When Paint.NET v5.0 ships, my plugin pack will contain Selection > Outline that can render a solid or dashed line.
  15. If you already have a selection, just switch to the background layer and press the Delete key. If you really want to use Layer 2 as a mask layer for the Background layer... 1. Press Ctrl+A on Layer 2 2. Press Ctrl+C to copy that layer to the clipboard 3. Switch to the Background (white) layer 4. Use Effects > Object > Paste Alpha* *You need my plugin pack installed for that one.
  16. I know nothing about Android icons. You should ask on a forum dedicated to Android development.
  17. Why are you not antialiasing using alpha instead of shades of gray?
  18. When Paint.NET 5.0 drops you'll be busy, I'm sure!
  19. @null54, have you considered doing something like my steganography plugin? During the encoding it pops up it's own loading bar. Check it out.
  20. Import your image into Microsoft Word and size/print it from there. It'll do what you want.
  21. How would Paint.NET decide which file was the original and which was the duplicate?
  22. Did you put your text on a new transparent layer? It won’t work if you put your text on the default white layer.
×
×
  • Create New...