MadJik

Members
  • Content count

    2,118
  • Joined

  • Last visited

  • Days Won

    8

MadJik last won the day on June 23

MadJik had the most liked content!

Community Reputation

43

About MadJik

  • Birthday 08/26/1964

Profile Information

  • Gender
    Male
  • Location
    Lille;France

Recent Profile Visitors

1,453 profile views
  1. I confirm the crash but the log file is poor: "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."
  2. I feel as a noob as I was off for a period. So my question could seam simple: How to(is it possible to) "codelab" a plugin for multi-language (English/french/russian)?
  3. Testing some fractal attractor...
  4. Hi there what's up, I was passing nearby and I said to myself I should give a try to this competition to brush up my paint.net skill...
  5. Hi, I've checked the links. Everything is ok for download. Read the post of IRON67 and/or try with another browser
  6. I like this kind of comment. Thx
  7. You could fill the layer with a white color and use blend mode or use a transparent background not at 0 but at 1... Full transparancy is not handled. This is the source code you could adapt with the codelab. // Title: Donut distortion // Name: Donut // Author: 2012 MadJik (Jean-Claude Jay) // Submenu: Distort // URL: http://forums.getpaint.net/index.php?showtopic=7186 // Version 1.2 #region UICode int Amount1 = 300; // [0,1000] External radius int Amount2 = 100; // [0,1000] Internal Radius bool Amount3 = false; // [0,1] Unit : Off=pixels, On=x/1000 of smallest side double Amount4 = 10; // [-360,360] Distortion angle int Amount5 = 2; // [0,5] Quality (AntiAlias) int Amount6 = 0; // [0,100] Highlight double Amount7 = 0; // [-1,1] Phase Pair<double, double> Amount8 = Pair.Create( 0.0 , 0.0 ); // Offset Blue int Amount9 = 100; // [0,100] Effect Mix byte Amount10=0; // Mode|Soft|Medium|Hard|Distroy #endregion public const double FULL_PI = 3.14159265358979323846; public const double DEUX_PI = FULL_PI * 2.0; public const double DEGR_PI = FULL_PI / 180.0; public float t = 0; public float ph = 0; ColorBgra EffectMix(ColorBgra dstpix, ColorBgra srcpix, double intensity) { dstpix.R = (byte)(dstpix.R * intensity + (1.0 - intensity) * srcpix.R); dstpix.G = (byte)(dstpix.G * intensity + (1.0 - intensity) * srcpix.G); dstpix.B = (byte)(dstpix.B * intensity + (1.0 - intensity) * srcpix.; return dstpix; } float Inlight(float x, float y, float ri, float re, float rm, float d) { if ((d >= ri) || (d <= re)) { d -= ri; float dist = (float)Math.Sqrt(d); float angle = dist * t - ph; float z = (float)(Math.Cos(angle) * (rm - dist)) ; return z; } return 0; } void Render(Surface dst, Surface src, Rectangle rect) { Rectangle selection = EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt(); int sL = selection.Left; int sR = selection.Right; int sT = selection.Top; int sB = selection.Bottom; int sW = sR - sL; int sH = sB - sT; int CenterX = (int)(sW * (1.0 + Amount8.First) / 2.0) + sL; int CenterY = (int)(sH * (1.0 + Amount8.Second) / 2.0)+ sT; // check the smallest amount float radE = Amount1; if (Amount2 > radE) radE= Amount2; float radI = Amount2; if (Amount1 < radI) radI= Amount1; float lm = (float)Amount6 * 0.05f; // radius in ?/00 if (Amount3) { float fullval = sW; if (sH < sW) fullval = sH; float ratio = fullval / 2000.0f; radE = radE * ratio; radI = radI * ratio; } // amount must be different if (radE == radI) radE++; // Light float radM = radE - radI; t = (float)FULL_PI / radM; ph = (float)(Amount7 * DEUX_PI); // calculate the squares float radE2 = radE * radE; float radI2 = radI * radI; // gap between radius float radM2 = radE2 - radI2; //distortion angle (strength) float angle = (float)(Amount4 * DEGR_PI); // Angle int r,g,b,a; double mix = Amount9 / 100.0; ColorBgra tmppix; // Variables for Anti-Aliasing int aaLevel = Amount5; //Anti-Alias level int aaSamples = aaLevel * aaLevel + 1; PointF[] aaPoints = new PointF[aaSamples]; // Init table for AA (don't ask me how it works) for (int s = 0; s < aaSamples; ++s) { double x = (s * aaLevel) / (double)aaSamples; double y = s / (double)aaSamples; x -= (int)x; // RGSS + rotation to maximize AA quality aaPoints[s] = new PointF((float)x - 0.5f, (float)y - 0.5f ); } for (int y = rect.Top; y < rect.Bottom; y++) { for (int x = rect.Left; x < rect.Right; x++) { tmppix = src[x,y]; float rX = (float)(x - CenterX); float rY = (float)(y - CenterY); b = 0; g = 0; r = 0; a = 0; int cptaa = 0; foreach (PointF pt in aaPoints) { float xaa = (float)(pt.X + rX); float yaa = (float)(pt.Y + rY); float tmpR = xaa * xaa + yaa * yaa; if ((tmpR >= radI2) && (tmpR <= radE2)) { float tmp1 = radE2 - radI2; float tmp2 = (tmpR - radI2) / tmp1; // formula on selected mode float w_angle =0; switch (Amount10) { case 0: w_angle = (float)((Math.Cos((1.0f - 2.0f * tmp2) * FULL_PI) + 1.0f) / 2.0f); break; case 1: w_angle = (float)(Math.Sin(tmp2 * FULL_PI)); break; case 2: // circle float tmp3 = (tmp2 - 0.5f) * 2.0f; if (tmp3 == 1.0f) w_angle = 0; else w_angle = (float)(Math.Sqrt(1.0f - tmp3 * tmp3)); break; case 3: // cos w_angle = (float)(Math.Cos(tmp2 * FULL_PI)); break; } float c_angle = (float)Math.Cos(angle * w_angle); float s_angle = (float)Math.Sin(angle * w_angle); float srcX = (float)(CenterX + xaa * c_angle - yaa * s_angle); float srcY = (float)(CenterY + xaa * s_angle + yaa * c_angle); tmppix = src.GetBilinearSampleWrapped(srcX, srcY); if (tmppix.A == 0) tmppix = src[x,y]; float Z = Inlight(xaa, yaa, radI, radE, radM, tmpR); if (Z != 0) { if (Z > 0) { int Light = (int) ((lm * Z) + 0.499f); if (Light > 0) { if (Light > 0xff) { Light = 0xff; } tmppix = ColorBgra.Blend(tmppix, ColorBgra.White, (byte) Light); } } else { int Light = (int) ((lm * -Z) + 0.499f); if (Light > 0) { if (Light > 0xff) { Light = 0xff; } tmppix = ColorBgra.Blend(tmppix, ColorBgra.Black, (byte) Light); } } } cptaa++; r += tmppix.R; g += tmppix.G; b += tmppix.B; a += tmppix.A; } } if (cptaa != 0) { tmppix.R = (byte)(r / cptaa); tmppix.G = (byte)(g / cptaa); tmppix.B = (byte)(b / cptaa); tmppix.A = (byte)(a / cptaa); } if (Amount9 < 100) dst[x,y] = EffectMix(tmppix, src[x,y], mix); else dst[x,y] = tmppix; } } }
  8. Never heard about it, I'll give it a try...
  9. This is the one I thought about... No plugin will do what you could have in mind! But with your mind you could use the existing capabilities of Paint.net and its plugins to achieve what you are looking for. You could draw any H/I checkers (or some Escher lezar) and use the layers to give the colours variation...
  10. Thank you for your PM ! My version of the tile plugin is just playing with more parameters than the original. It is a true x,y calculation without any constraint form. In fact it's like a mix of two curves seen from above. I'm really not able (in skill and in time) to think about your suggestion. BTW if you want me to add I and H to the shape plugin : http://forums.getpaint.net/index.php?showtopic=23498 it is easy, just ask ! Also you could try the plugin "fill with" to paint the canvas this a picture.
  11. Hi, You could try this tuto (advanced user) : http://forums.getpaint.net/index.php?/topic/21485-a-way-to-create-some-tubular-net/?hl=tube In step 03 set the vertical step to 60 instead 15. You could also give a try to this plugin: http://forums.getpaint.net/index.php?showtopic=17292
  12. I've change the link to another address. You could now download my pack.
  13. thank you skullbonz. It is easy to create the setup with Inno Setup http://www.jrsoftware.org/isinfo.php
  14. I would compare paint.net to a toolbox with some standard tools provided and then you can add more specific tools... Have you tried to run my pack with the setup.exe ? Then you should confirm the access to the folder...