Jump to content

Red ochre

Members
  • Posts

    3,019
  • Joined

  • Last visited

  • Days Won

    125

Posts posted by Red ochre

  1. I scanned it with Kaspersky pure, both before and after unzipping it - all ok. It seems to work as expected and nothing odd noticed yet - but I will move the dll into 'quarantine', to be safe.

    Thanks for the advice, - I'm always very wary of downloading from off-site links - hopefully I've got away with it this time.

  2. Thanks! - I just fancied trying it, so I won't be heartbroken if you can't find a copy.

    Rick Brewster, on 02 March 2007 - 12:49 PM, said:

    This looks like the exact same as Median, except with a square shaped area instead of a circle shaped area.

    ? Squares and circles are slightly different, although I may have confused the issue! :lol:

  3. Hello Ahmed,

    Glad to see you've started with codelab ! - (I haven't had time to test your plugin yet I'm afraid).

    If I understand you correctly, then I think the problem is ... you should be giving each version, of each plugin, a unique name and menu name, in the 'create dll' save dialog.

    PDN will get very confused if you have 2 plugins with exactly the same name. Although they should have different version numbers.

    Personally I name them ... exampleplugin1a, exampleplugin1b, exampleplugin1c, etc. for example.

    Then when I publish, I make the title nice and simple.

    You can write the title and other information into the code itself, so you only need to change the last character each save.

    Take a look at this old developers central thread - where EER helped me get started. ;)

    I think you may get more knowledgeable replies about codelab if you post in 'developers central' or in the codelab thread itself.

    Good luck :)

    • Upvote 1
  4. Hello 'penguin625',

    There are 2 plugins which I know of that can do this.

    1. Boltbait's transparency plugin - in his pack (and is found under Adjustments) - good for simply changing the transparency.

    2. My 'Tweak transparency' plugin, in my pack (under effects/transparency) - complicated to use, but can change the transparency and the shading of a selection in many ways, based upon comparing the blurred values to the original ones. - That's probably as clear as mud! :P

    If you look in EEr's plugin index you should be able to find links to both.

    • Upvote 1
  5. That's what I thought it should do - perhaps it's just my eyes - color is very subjective (dependent on the adjoining colors).

    So, if, lets say a 'cream' coloured pixel is selected it should change to a high value neutral grey, say B= G = R = 200 ish. And then change the rest of the picture by the ratio that caused that change?

    I don't think P.S is doing that - but I could well be wrong - I often am :P

    Edit - YES - I am wrong - both yours and PS do what they should - just my perception of the colors!

  6. Nice work! - and thanks for showing the code too :P

    1. The UI is great allowing both methods of selection and color change on the fly.

    2. It appears to behave pretty much the same behavior as the PS elements version I've got - which I guess is the idea.

    3. I'm a bit confused with the elements version anyway. - it says to select an area you wish to become white, grey or black - but it doesn't actually do this (still leaves a slight color caste)?

    Still, it's what people used to P.S. will be expecting. Personally I prefer tinkering around with curves - but that is a lot more time consuming.

    Thanks for putting the work in!

  7. May I suggest (only an idea),

    - that instead of the double vector UI, you could simply let the user set the primary color using the ink dropper tool. And use that as the selected 'white' value?

    It would be more logical to use the secondary color though - but that may mean you'd have to write a 'black balance' version too!

    Only a suggestion - (it would make the 'white' selection more accurate).

    - I know how much work can be involved, even starting from an apparently simple idea.

    But I think it could be useful plugin. :)

  8. Thank you all, for the positive reaction :D. - really appreciated.

    'Squirkle', - Pdnnoob got it - I thought Squirkle is more 'quirky', and phonetically more logical than squircle.

    I'd been reading a book by Alex Bellos called 'Alex's adventures in numberland', that descibes how the French mathematician Gabriel Lame, in 1818, started experimenting with values of the exponents in the circle formula. You know "the sum of the 2 squares equals the square hippopotamus" :P.

    If the exponent is 1 it's a diamond, 2 is a circle, 2.5 was named a 'superellipse' by Piet Hein (Danish Architect), and as the exponent approaches infinty, it becomes a square. - I don't know of name when the value is less than 1.

    I thought I'd try and program it into codelab and thought the results could be quite useful. Pdn has the advantage over all other graphics programs that I have tried, because of codelab - for a novice like me, it's far more accessible than VS studio and I can actually produce something useful !.

    • Upvote 1
  9. This will render 'squirkle' shapes eg. from rounded lozenge through circle to square. It is different from 'rounded rectangle' as there is curvature in the 'flat' sides.

    Probably best to see the screenshot below!

    With a range of line and background colours, including transparent, it should be useful for frames, buttons and vignettes.

    Now in the updated Red ochre plugin pack

    I have changed the default shape setting to circle, because I found it more convenient!

    (the .dll is only available in the pack now, the updated version now has the same name as the original version. The first version has the word 'middle' spelled as 'midddle', other than that, they are the same.)

    Here is the code lab code too.

    Hidden Content:

    /* =================================================== */
    /*	 */
    /* squirkle    */
    /* (c) 2011 Red Ochre	 */
    /*	 */
    /* Description: produces square/circle shapes	 */
    /*	 */
    /* ========================================== ======== */
    // Name: squirkle
    // Author: Red ochre (John Robbins)
    // Submenu: Render
    // URL: http://www.getpaint.net/redirect/plugins.html
    // Title: Squirkle										 Feb 2012 Red Ochre
    
    #region UICode
    Pair<double, double> Amount1 = Pair.Create( 0.0 , 0.0 ); // middle
    double Amount2 = 0; // [-90,90] angle (degrees)
    double Amount3 = 0; // [-1,1] wide ...													  ...tall
    double Amount4 = 2.5; // [0.5,20] exponent
    double Amount5 = 2; // [0,10] size
    byte Amount6 = 0; // line properties|primary color|secondary color|transparent|source image|inverted source|blue|cyan|green|yellow|red|magenta
    byte Amount7 = 0; // background properties|secondary color|primary color|transparent|source image
    int Amount8 = 10; // [0,200] line width
    bool Amount9 = false; // [0,1] solid middle
    bool Amount10 = true; // [0,1] smoothing
    #endregion
    void Render(Surface dst, Surface src, Rectangle rect)
    {   ColorBgra PrimaryColor = (ColorBgra)EnvironmentParameters.PrimaryColor;
       ColorBgra SecondaryColor = (ColorBgra)EnvironmentParameters.SecondaryColor;
       ColorBgra cp;    // current pixel
       Rectangle selection = this.EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt();
    
       double X,Y;
       int H = selection.Bottom - selection.Top;
       int W = selection.Right - selection.Left;
       int small = H;if(H < W){small = W;}//smallest side
       double deg90 = Math.PI /2;
       double angle = (Amount2 * deg90/ 90);
       double sina = Math.Sin(angle);
       double sinb = Math.Sin(deg90 - angle);
       double cosa = Math.Cos(angle);
       double cosb = Math.Cos(deg90 - angle);
       double dx = (W / 2) * (1 + Amount1.First);
       double dy = (H / 2) * (1 + Amount1.Second);
       int Ox = (int)(selection.Left + dx );// horizontal position (moveable)
       int Oy = (int)(selection.Top + dy );// vertical position (moveable)
       double xrat = 1 + Amount3;
       double yrat = 1 - Amount3;// length and height multipliers
       double exp = Amount4;//exponent (power)
       int rf = (int)(Amount5 * small/10);// radius factor
       int lw = Amount8 ;// line width
       if(lw >= rf){lw = rf;}// to stop negative radius
       int B,G,R,A;
       int lb = PrimaryColor.B, lg = PrimaryColor.G,lr = PrimaryColor.R,la = PrimaryColor.A; // otherwise says values not assigned?
       int bb = SecondaryColor.B, bg = SecondaryColor.G, br = SecondaryColor.R, ba = SecondaryColor.A;
    
       for (int y = rect.Top; y < rect.Bottom; y++)
       {
        for (int x = rect.Left; x < rect.Right; x++)
        {
    	    // assign line and background colours
    	    cp = src[x,y];
    	    B = (int)cp.B;G = (int)cp.G;R = (int)cp.R;A = (int)cp.A;
    	    switch (Amount6)// line properties
    		   {case 0: lb = PrimaryColor.B; lg = PrimaryColor.G; lr = PrimaryColor.R; la = PrimaryColor.A;break;    //line colour = primary colour default black
    		    case 1: lb = SecondaryColor.B; lg = SecondaryColor.G; lr = SecondaryColor.R;la = SecondaryColor.A;break;    //secondary colour
    		    case 2: lb = 0; lg = 0; lr = 0; la = 0;break;    // transparent
    		    case 3: lb = B; lg = G; lr = R; la = A;break;    // as original source
    		    case 4: lb = 255 - B; lg = 255 - G; lr = 255 - R; la = 255 ;break;    // inverted source
    		    case 5: lb = 255;lg = 0;lr = 0; la = 255;break;// blue
    		    case 6: lb = 255;lg = 255;lr = 0;la = 255;break;//cyan
    		    case 7: lb = 0;lg = 255; lr = 0; la = 255;break;//green
    		    case 8: lb = 0;lg = 255;lr = 255;la = 255;break;//yellow
    		    case 9: lb = 0;lg = 0;lr = 255;la = 255;break;//red
    		    case 10: lb = 255;lg = 0;lr = 255; la = 255;break;//magenta
    		    }
    		 switch (Amount7)//background properties
    		   {case 0: bb = SecondaryColor.B; bg = SecondaryColor.G; br = SecondaryColor.R; ba = SecondaryColor.A;break;    //background colour = secondary colour default white
    		    case 1: bb = PrimaryColor.B; bg = PrimaryColor.G; br = PrimaryColor.R; ba = PrimaryColor.A;break;    // primary
    		    case 2: bb = B; bg = G; br = R; ba = 0;break;    //transparent
    		    case 3: bb = B; bg = G; br = R; ba = A;break;    // as original source
    		    }
    	    // set BGRA values to background values
    		 B = bb;G = bg;R = br;A = ba;
    
    	    // work out X & Y co-ordinates with rotation
    		 int cX =  + x  - Ox;  
    		 int cY =  - (y  - Oy) ; //moving but not rotating
    		 X = ((cX * cosa) + (-cY * cosb)) * xrat;// moving and rotating
    		 Y = ((cX * sina) + (cY * sinb)) * yrat;// now X and Y are doubles and wide tall included
    
    
    	    // SQUIRKLE
    		  double xP = Math.Pow(Math.Abs(X),exp);
    		  double yP = Math.Pow(Math.Abs(Y),exp);
    		  int ro = rf + lw;
    		  int ri = rf - lw;
    		  int ro1 = rf + lw + 1;
    		  int ri1 = (rf - lw) - 1;
    		  double squirk = Math.Pow(xP + yP,1/exp);
    
    
    		 if(!Amount9 && squirk >= ri && squirk <= ro){B = lb;G = lg;R = lr;A = la;}//ring line
    
    
    		 if((Amount9)&&(squirk <= ro)){B = lb;G = lg;R = lr;A = la;}//solid
    
    
    		    // smoothing
    		 if(Amount10)
    	    {
    		  double rat = squirk - (int)(squirk);
    		  double irat = 1 - rat;
    		    // outer
    		  if(squirk <= ro1 && squirk > ro)
    			    {
    				 B = (int)((irat * lb) + (rat * bb));
    				 G = (int)((irat * lg) + (rat * bg));
    				 R = (int)((irat * lr) + (rat * br));
    				 A = (int)((irat * la) + (rat * ba));
    			    }
    
    		    // inner
    		  if(!Amount9 && squirk < ri && squirk >= ri1)
    			    {
    				 B = (int)((rat * lb) + (irat * bb));
    				 G = (int)((rat * lg) + (irat * bg));
    				 R = (int)((rat * lr) + (irat * br));
    				 A = (int)((rat * la) + (irat * ba));
    			    }
    		 }
    
    	    // re assemble
    	    cp = ColorBgra.FromBgra( Int32Util.ClampToByte(, Int32Util.ClampToByte(G), Int32Util.ClampToByte(R), Int32Util.ClampToByte(A));
    	    dst[x,y] = cp;
        }
       }
    }
    
    

    Enjoy ;)

    All feedback appreciated (well hopefully !)

    squirklescreenshot800by600.jpg

    • Upvote 1
  10. Thanks Welshblue,

    I like using zoomblur for shadows as it picks up a bit of the object colour - like the reflections you get in shadows. However the light sources are a bit all over the place - the original reason for putting the peach in was to cover up the dodgy join between 2 photos :D

    re: Stranglers - They're still going - saw them last year - good gig too.

  11. Here goes :

    1. Hot head (psychocolour with some flames added) - I didn't really sit in the oven!

    Hothead.jpg

    2. Peach Beach ('Stranglers' fan)

    peachbeach.jpg

    3. Faux snow 1 (simply duplicated the layer then embossed then changed blend type to difference - sadly doesn't work for every image).

    018fauxsnow.jpg

    4. same bigger

    fauxsnow1.jpg

    5. same image but can't remember what I did - could have been negation.

    fauxsnow2.jpg

    It's just for fun ;)

  12. Hello 'Wollemi',

    The composition tool will only really help by chopping off part of your image to make it 6:4 ratio - you will have to decide which part of your image to keep.

    Another way would be to distort the image by stretching or squashing it to fit - (which you may get away with on landscapes but faces would look strange).

    To do this use Image/ Resize (on the menu at the top ).

    Or you maybe able to combine both methods .. ie. crop a bit and squash a bit!

    There is a method called 'seam carving' that sounds like it may suit you ... but sadly, I don't think we have a plugin to do this yet :( - (I've thought about it, but I don't have the skills yet ;)).

    As for finding the correct thread on the forums, you could try the google search Paint.NET Search (I hope that's right - I'm useless at links!).

  13. Re 1 - You could possibly use my 'composition tool'.

    set the preset aspect ratio to 'as original',

    the size to 100%,

    grid type to none,

    and rotate using the slider or type the angle in.

    Re 4 - shapes - there are quite a few available in various plugins (see EER's index) - what pre-made shapes are you after?

×
×
  • Create New...