Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


MJW last won the day on October 3

MJW had the most liked content!

Community Reputation


1 Follower

Profile Information

  • Gender

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. I think that may be misunderstanding an English idiom. "It would be a shame" means, more or less, "it would be unfortunate" not "it would be shameful." (I'd never considered what an odd expression it is if taken literally.)
  2. I believe offsetting is possible. Whether it will work exactly as you wish is hard to say. The part I was having difficulty with is using the edge transparency of antialiased objects to adjust the distance in a way that reduces jagginess. It could be that when I take a fresh look at it, a solution will be clear. That sometimes happens.
  3. Sorry about the long, long delay. I will get back on it. I really wanted to add the type of smoothing Red Ochre referred to here: I tried a number of approaches, but so far haven't found anything satisfactory. As I unfortunately sometimes do in that situation, I sort of put it aside in frustration, and worked on other things. If I can't come up with a solution to that problem soon, I'll release a version without it, then try to solve the smoothing problem, so I can release an update with it.
  4. That seems like a pretty significant detail. What are the PNG settings when you save the file in Paint.NET? The settings are displayed in a dialog titled "Save Configuration" (or the German equivalent) just before the image is saved
  5. I should have said that you need to clear the array when you don't allocate it. Otherwise it will have the left-over image from the previous time. if (Popcorn_Array == null) Popcorn_Array = new int [w,h]; else Array.Clear(Popcorn_Array, 0, w*h);
  6. I suggest you change Popcorn_Array = new int [w,h]; to if (Popcorn_Array == null) Popcorn_Array = new int [w,h]; I don't see any reason for reallocating the array each time a control is changed. Though it probably wont have major consequences performance-wise, it does force more garbage collection.
  7. I'm not sure why that would be, unless it's a limitation in the CodeLab UI designer. My Texture Merger plugin has quite a few more controls than than the 16 or so in your plugin
  8. I obviously didn't look at the code as closely as @toe_head2001 did. He's correct. The reason it's slow is that you're redoing a lot of once-per-frame stuff for each ROI. PreRender will fix that.
  9. Using a switch statement is certainly a respectable way to do it; though it would probably be somewhat more efficiently done with delegates. I see from the code that func_x1, etc., are selected by the UI, so having them be delegates, external to Render() should pose no problem. As a very minor detail, I'd write the switch statement as: double func_v(double v,int c){ switch(c){ case 0: return Math.Sin(v); case 1: return Math.Cos(v); case 2: return Math.Tan(v); default: return Math.Atan(v); } } That seems a little clearer to me.
  10. It appears to me that what you want may be delegates. Delegates are more or less what in C and C++ would be called function pointers. Certainly for func_a and func_b you need to use delegates. What's being done there, assigning the various trig functions to func_a, is exactly what delegates do. You'd define a delegate with one double argument, returning a double, then assign the trig functions to it. I'll try to explain in more detail when I have time later. EDIT: Removed stuff about lambda expressions, which I think may not be necessary. I think delegates
  11. I made a small change. I increased the Offset precision to 4 decimal places. It was 3. I wasn't sure 3 would be enough in some situations. The version is now 1.1.0. (My version number system is basically that the first number changes for a large revision, with a major change in functionality. The second number changes for more modest changes in functionality, or if the user interface changes. The third number changes for bug fixes and for minor revisions of the Help menu.)
  12. Mise En Abyme creates a recursive picture-within-a-picture, like on the Quaker Oats box, often also referred to as the Droste effect. The plugin DLL (versions 1.1.0, 24 Oct 2020): Mise En Abyme_1.1.0.zip The region in which the canvas image is copied is determined by the selection. The plugin is in the Selection (not the Distort) menu for two reasons. First it requires a selection; second, the Distort menu is getting quite crowded -- at least mine is. The Help Menu: Mise En Abyme recursively copies the canvas image into a selection to achie
  13. My most sincere thanks to @Pixey!
  14. You may perhaps wince at the suggestion, but there is CodeLab. If you haven't programmed before, it can be intimidating, but with it you can quite easily accomplish what would otherwise be impossible.
  • Create New...