RetouchPRO

Go Back   RetouchPRO > Tools > Software
Register Blogs FAQ Site Nav Search Today's Posts Mark Forums Read


Software Photoshop, Lightroom, Paintshop Pro, Painter, etc., and all their various plugins. Of course, you can also discuss all other programs, as well.

FilterMeister - General Info

Reply
 
Thread Tools
  #1  
Old 02-10-2006, 08:27 AM
Cameraken's Avatar
Cameraken Cameraken is offline
Senior Member
 
Join Date: Feb 2005
Location: Lancashire (UK)
Posts: 1,158
FilterMeister - General Information

(byRo: this thread was split from another much longer one - so some posts may seem out of context)

FilterMeister (FM) is a plug-in for Adobe Photoshop®-compatible graphics programs with the ability to create professional plug-in filters which can be distributed on a royalty-free basis.

It’s available here
http://www.filtermeister.com

There are loads of samples and documentation at the site and there is a User group here.
http://groups.yahoo.com/group/FMML/

we can share filters and ideas and perhaps learn the C+ style language.


Ken

Last edited by byRo; 05-06-2006 at 01:17 PM. Reason: byRo: Thread split
Reply With Quote top
  #2  
Old 02-10-2006, 08:42 AM
byRo's Avatar
byRo byRo is offline
Senior Member
 
Join Date: May 2004
Location: Goianésia, Brazil
Posts: 1,609
A question...

How many folks aroud here already have experience with FilterMeister?

I started messing around in Filter Factory, but the interface was sooo ugly that I lost interest.
Now I'm getting fired up again.

Reply With Quote top
  #3  
Old 02-17-2006, 01:32 PM
byRo's Avatar
byRo byRo is offline
Senior Member
 
Join Date: May 2004
Location: Goianésia, Brazil
Posts: 1,609
Quote:
Originally Posted by Cameraken
I must start reading that manual.
I just did!

Something I picked up. is that the Border code done this way is very inefficient.
You will be testing every single pixel in the image, to just alter a few of them which happen to be the border area.
Much quicker, in terms of execution time, would be to set up some loops to change only the borders.
(Although, admittedly, in this case, it probably isn't really worth it).

Talking of execution speed...
I've been tearing apart the "Recursive Gaussian Blur" code.
I noticed that the author does not use X and Y, but instead uses x_start, x_end, y_start and y_end.
I, thinking how clever I was , substituted the X and Y into the code - which then ran 6 times slower.

Stroker? Help! What's going on?

Reply With Quote top
  #4  
Old 02-17-2006, 01:59 PM
Stroker's Avatar
Stroker Stroker is offline
Senior Member
 
Join Date: Jan 2005
Posts: 370
When you have an image in FM, the dimensions are 0 to X and 0 to Y. Actually, I think it's X-1 and Y-1.

Now, the preview can only show so much. The viewable part of the image in the preview is x_start to x_end and y_start to y_end. When you use these, you are only processing only what is in the preview instead of the entire image.

The suck part is when using isTilable=False. This is going to be the case when using recursive Gauss. When previewing with rG, just the preview is processed and all is fine. However, once you click Okay, the entire image is now one big tile instead of little chunks. Add buffer usage and memory can sky rocket. This means that rG will bog down with bigger images when you click Okay, but should be fine while previewing.

Make sense?

edit:

Just found out my 8 year old is being taught French in school (public). Her reading level is very advanced, so she is in a special class. Just had to share that.

Last edited by Stroker; 02-17-2006 at 02:05 PM.
Reply With Quote top
  #5  
Old 02-17-2006, 03:47 PM
byRo's Avatar
byRo byRo is offline
Senior Member
 
Join Date: May 2004
Location: Goianésia, Brazil
Posts: 1,609
Quote:
Originally Posted by Stroker
Now, the preview can only show so much. The viewable part of the image in the preview is x_start to x_end and y_start to y_end. When you use these, you are only processing only what is in the preview instead of the entire image.
That explains it PERFECTLY! Thanks.

Quote:
Originally Posted by Stroker
Just found out my 8 year old is being taught French in school (public). Her reading level is very advanced, so she is in a special class. Just had to share that.
Pleased to hear -you must be very proud!
(I hated French whan I was at school, but that's probably because I HAD to take it - now I speak Portuguese all day!)

Reply With Quote top
  #6  
Old 03-01-2006, 08:41 AM
byRo's Avatar
byRo byRo is offline
Senior Member
 
Join Date: May 2004
Location: Goianésia, Brazil
Posts: 1,609
OK, stroker, here's some to start....

1) The "OnCtl" handler gets activated whenever something happens in a control (or in the dialog?). The "ForEveryTile" also gets activated. If I set a control to "no event" (or something like that) can I avoid the "ForEveryTile";

2) It seems that every time the ForEveryTile starts, the image buffers (pget / tget / t2get) get cleared. Right?

3) Inside the "OnFilterStart" handler, I don't have access to x_start etc. (OK, that's pretty obvious) but can I still access the source pixels (src(x,y,z))?

4) If I want to do an initial one-off transformed image (like in my equalization plugin) and don't want to keep on recalculating the same thing needlessly, I imagine (based on question 2 and 3) that I could calculate the "transform" in the "OnFilterStart" handler and then would have to store in an array (memory). Right?

5) Seems that the scope of variables is only within the handler. If I want to pass a value between handlers (or iterations) the options would be:
a) A control on the dialog;
b) Use the variable array ( get(), put()) - assuming that this doesn't get cleared every time. Does it?
c) Stored in memory.
6) Seems that I remember you sneaked in something like "extendedui", what's that?

7) Where's your secret supply of FM info?

OK, you don't have to reply to 7) if it really is a secret, OK?


Reply With Quote top
  #7  
Old 03-01-2006, 06:05 PM
Stroker's Avatar
Stroker Stroker is offline
Senior Member
 
Join Date: Jan 2005
Posts: 370
1. I'm not sure. I'll look into this.

2. See #1, but I'm fairly sure buffers are cleared.

3. You should have access to those variables. Try this:
Code:
%ffp
OnFilterStart:{
   Info("%d %d",x_start,x_end);
return false;
}
If you zoom in/out and pan, you should get x_start et al.

4. This one is kind of tricky. Currently it has to be hacked using a system global variable.

Code:
%ff

OnFilterStart:{
if (i9==0){
i9=123456;
// more code here to run once
}

return false;
}

OnCtl(n):{
if ((n==CTL_CANCEL || n==CTL_OK) && e==FME_CLICKED) i9=0; //RESET IT
return false;
}
It's an ugly hack, but it works. If you plan on moving ctl_preview, ctl_zoom, or ctl_progress, you have to use this hack and setCtlPos().

A truly run once structure is in the works. I think it is called OnFilterInit. Personally, I'm partial to OnFilterAlpha.

5. A common method is to use a control and hide it. I'm pretty sure get() and put() are global. Arrays ala allocArray() are global. There are some named variables that are global, like i9 k0 str0, but I don't know too much about these.

6. "extendedui" is for drop-down lists. Combobox, I believe. I can't remember what it does off the top of my head, but I know I like it so I just use it automatically. Should be in UserGuide.pdf.

7. The docs (HTML and PDF), FMML archive, source codes, and lots of time reading. I also keep a notebook - a honker 3' D-ring by my right elbow. I've been at it for close to a year and I'm only just starting to feel the groove.

Roland, you should check out the FM Mailing List (FMML). Lots of good FM users there including the developers. Sounds like you might be getting too big for my breaches and you will need their help more than mine soon enough. Kudos.

Last edited by Stroker; 03-01-2006 at 06:12 PM.
Reply With Quote top
  #8  
Old 03-01-2006, 06:42 PM
byRo's Avatar
byRo byRo is offline
Senior Member
 
Join Date: May 2004
Location: Goianésia, Brazil
Posts: 1,609
Thanks, Stroker, really appreciate the help.

I've just done a couple of hours wandering around FMML, what a pity it isn't all neat and organized like RetouchPRO.

I'll be setting up some test codes for the points still in doubt. Get back to you later.

Reply With Quote top
  #9  
Old 03-01-2006, 08:31 PM
Cameraken's Avatar
Cameraken Cameraken is offline
Senior Member
 
Join Date: Feb 2005
Location: Lancashire (UK)
Posts: 1,158
Question 7.

Google “FilterMeister Code”. Apart from FilterMeisters own Web page you get straight back here.

Thanks to Stroker this thread IS THE best supply of FM info.

Ken.
Reply With Quote top
  #10  
Old 03-02-2006, 07:26 PM
byRo's Avatar
byRo byRo is offline
Senior Member
 
Join Date: May 2004
Location: Goianésia, Brazil
Posts: 1,609
Quote:
Originally Posted by Stroker
5. A common method is to use a control and hide it. I'm pretty sure get() and put() are global. Arrays ala allocArray() are global. There are some named variables that are global, like i9 k0 str0, but I don't know too much about these.
I made up this little test routine (using ctl(0) as the run-once flag):
Code:
%ffp

ctl(0): CHECKBOX  , "Initialize"  , pos=(285,50), size=(40,12), Val = 1
ctl(1): PUSHBUTTON, "GO"          , pos=(285,70), size=(40,12)

ForEveryTile:{
	
	if (ctl(0)) {                //Initialize the filter
		
		i0 = 199;                     // init i0
		put( 199, 0);                 // init i(0)
		allocArray(0,1,0,0,1);
		putArray(0,0,0,0,199);        // init array()
		
		setCtlVal(0,0);         //  end of initialize routine
	}
	
	//Normal tile processing
	Info( "Values \ni0 is %i \nget(0) is %i \narray is %i", i0, get(0), getArray(0,0,0,0));
	
	i0++;                                     //increment i0
	put(get(0)+1,0);                          //increment i(0)
	putArray(0,0,0,0,getArray(0,0,0,0)+1);    //increment array()
	return true;
}
First time through all get set to 199 by the initialize routine, next time (pressing "GO") the i0 and array get incremented, but the get(0) just returns zero.
So, yes, i0 (up to i9) and arrays are global, the "put/get array" is not.

Quote:
Originally Posted by Stroker
A truly run once structure is in the works. I think it is called OnFilterInit.
I had been thinking that the OnFilterStart is what would do this function, however maybe combining this with an initialize flag I can get it to work like OnFilterInit.

Last edited by byRo; 03-02-2006 at 07:33 PM.
Reply With Quote top
Reply

  RetouchPRO > Tools > Software


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Important security info chrishoggy Salon 11 02-16-2007 03:31 PM
scratch info in info palette seanarmenta Photoshop Help 5 08-11-2006 09:32 PM
Using info from green channel, any help? RobArnold Image Help 8 12-07-2005 07:04 AM
File > File Info - Does Elements have this menu command? DannyRaphael Photoshop Elements Help 5 07-26-2004 08:18 PM
Mend Tool - Patron Info button error. jimlay Hidden Power Support 6 02-29-2004 01:49 PM


All times are GMT -6. The time now is 08:41 PM.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
Copyright © 2016 Doug Nelson. All Rights Reserved