|
forums.silverfrost.com Welcome to the Silverfrost forums
|
View previous topic :: View next topic |
Author |
Message |
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7932 Location: Salford, UK
|
Posted: Wed Oct 26, 2016 4:24 pm Post subject: Native %pl |
|
|
A native %pl is now available for beta testing in both 32 bit and 64 bit applications.
Please use the following DLL download carefully but only if you have version 8.05 of the FTN95 and only after backing up your existing Silverfrost DLLs.
The download includes a txt file that provides instructions together with a sample program.
https://www.dropbox.com/s/11preu54yrhi11n/newDlls11.zip?dl=0 |
|
Back to top |
|
|
aebolzan
Joined: 06 Jul 2007 Posts: 229 Location: La Plata, Argentina
|
Posted: Wed Oct 26, 2016 9:20 pm Post subject: |
|
|
Great!....now it works as I expected: no plot if no data. Thanks Paul for the update!......and some additional comments: I have been playing with the new version and found that "pen_style" can be varied from 0 to 4, 0 is solid, 1 is dashed an 4 seems to me to be dotted (is this correct?), but it is not easy to distiguish them, at least on my screen (1920x1080). I have changed "width" from 1 to 8, trying to distiguish the different lines and got the same "visual" line thickness in all my plots (at least on my screen). I have no printer at the moment so I cannot check if the printed output shows better the differences between lines. |
|
Back to top |
|
|
aebolzan
Joined: 06 Jul 2007 Posts: 229 Location: La Plata, Argentina
|
Posted: Thu Oct 27, 2016 12:32 am Post subject: |
|
|
Some new findings......%pl seems to be very strict: if at the very beginning one sets, for instance, "N-graphs=2", then it is not possible to plot either 1 or 3 curves (or data sets) during the run of a program. It is obviously possible to do that by adding a new %pl statement with the new option for graphs, but then the call to this new %pl opens a new, additional window. Is this so, or am I doing anything wrong?.
Agustin |
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7932 Location: Salford, UK
|
Posted: Thu Oct 27, 2016 7:57 am Post subject: |
|
|
Agustin
Thank you for the feedback.
The pen styles are those provided by the Microsoft GDI/GDI+ and have constants PS_SOLID = 0 etc. You will be able to get details by searching Microsoft MSDN. ClearWin+ %pl provides an interface into GDI+. GDI+ can input a user-defined "dashed array" to define the spacing. This is available in %gr but not in %pl at the moment.
There is a bug that caused the line width to get lost and this has now been fixed. In the meantime it will work (I think) if you specify the line width as the last %pl option.
The primary design of the native %pl is constrained by the aim of porting existing code as far as possible without modification. The coding within the library is simply an extension of what was already present. A new design was not really a possibility within the time available.
Having got this far there will naturally be many ways that %pl can be extended but in the short term I can only add these to the wish list.
Providing a variable number of graphs within the present design might prove to be a challenge that is difficult to resist - I will try not to be tempted.
In the meantime you might try filling in by drawing dummy graphs with zero height at every point. |
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7932 Location: Salford, UK
|
Posted: Thu Oct 27, 2016 2:37 pm Post subject: |
|
|
Agustin
I have added a new style value [style=3] that can be applied to any of the graphs drawn on one pair of axes. This bypasses the corresponding graph. There is also a new function SET_GRAPH_STYLE@(ID,INDEX,STYLE) that enables you to set the style (and activate or clear a graph) after the window has been created.
If you are interested in trying this out I will upload a new set of DLLs. |
|
Back to top |
|
|
aebolzan
Joined: 06 Jul 2007 Posts: 229 Location: La Plata, Argentina
|
Posted: Thu Oct 27, 2016 2:58 pm Post subject: |
|
|
Thanks Paul for your work....if you upload the new set of DLLs I will implement and try the new features of %pl with my code.
Agustin |
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7932 Location: Salford, UK
|
|
Back to top |
|
|
aebolzan
Joined: 06 Jul 2007 Posts: 229 Location: La Plata, Argentina
|
Posted: Thu Oct 27, 2016 11:35 pm Post subject: |
|
|
I have been testing this new version of %pl and found some issues. I have added to your example a second function z(n):
Code: | WINAPP
MODULE mydata
USE clrwin
C_EXTERNAL SET_GRAPH_STYLE@ "__set_graph_style"(VAL,VAL,VAL):INTEGER*4
INTEGER,PARAMETER::n=1000
INTEGER n_points
real*8:: y(n)=0.0,z(n)=0.0
CONTAINS
INTEGER FUNCTION draw()
INTEGER i,x
DOUBLE PRECISION p1,p2,p3
p1=1.5d0
p2=150.0d0
p3=15d0
x=0
DO i=1,n
y(i)=p1*sin(x/p3)*exp(-x/p2)
x=x+1
ENDDO
i = set_graph_style@(0,1,0)
CALL simpleplot_redraw@()
draw = 2
END FUNCTION draw
INTEGER FUNCTION draw2()
INTEGER i,x
DOUBLE PRECISION p2,p3,p4
p2=150.0d0
p3=20d0
p4=2
x=0
DO i=1,n
z(i)=p4*sin(x/p3)*exp(-x/p2)
x=x+1
ENDDO
i = set_graph_style@(0,2,2)
CALL simpleplot_redraw@()
draw2 = 2
END FUNCTION draw2
INTEGER FUNCTION clear()
CALL clear_screen@()
i = set_graph_style@(0,1,3)
i = set_graph_style@(0,2,3)
CALL simpleplot_redraw@()
clear = 2
END FUNCTION clear
END MODULE mydata
PROGRAM main
USE mydata
C_EXTERNAL WINOP@ '__winop'(INSTRING)
n_points = 1000
i=winio@('%ww[no_border]%ca[Damped wave]%pv&')
i=winio@('%mn[Edit[Draw,draw2, Clear]]&', draw, draw2,clear)
i=winio@('%fn[Tahoma]&')
i=winio@('%ts&', 1.1d0)
i=winio@('%tc&',rgb@(0,0,80))
i=winio@('%it&')
i=winio@('%`bg&',rgb@(230,255,225))
CALL winop@("%pl[native]")
CALL winop@("%pl[style=3]") ! curve joins points
CALL winop@("%pl[style=3]") ! curve joins points
CALL winop@("%pl[pen_style=0]")
CALL winop@("%pl[pen_style=4]")
CALL winop@('%pl[title="Sample plot"]')
CALL winop@("%pl[x_axis=Time(Milliseconds)]")
CALL winop@("%pl[y_axis=Amplitude@(-4.0)]")
CALL winop@("%pl[smoothing=4]") ! anti-aliasing
CALL winop@("%pl[smoothing=4]") ! anti-aliasing
CALL winop@("%pl[width=1]")
CALL winop@("%pl[width=4]")
i=winio@("%pl[colour=red,colour=blue,N_GRAPHS=2]",500,400,n_points,0.0d0,1.0d0,y,z)
END |
The first problem I found is that "style" should be set to 3, or the program crashes (in the NativePl.txt says that one can set 0,1,2, but seems that the old "style" has been replaced by the SET_GRAPH_STYLE@, right? ). I do not understand quite well the actual meaning of "style" (maybe because I am using the "set_graph_style@(0,1,0)" the use of style=3 is mandatory?) . The second issue I found is that the second "width" is used for both plots. I guess this is a bug. For the rest, it seems that all works fine. I have run several times the program changing options and worked. I still have to test the use of %`pl for plotting one or the other plot.
Agustin |
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7932 Location: Salford, UK
|
Posted: Fri Oct 28, 2016 8:21 am Post subject: |
|
|
Agustin
I don't understand the problem about the style. Your program works OK for me except for a couple of details:
a) I have to add a call to clear_screen@ before drawing otherwise the title goes wrong.
b) I get an added box around the whole graph area after calling clear_screen.
I can probably fix both these issues.
In the design I have assumed that one line width and one smoothing value will apply to all graphs. So in your program the last value that is set will be applied to all graphs. If you need either of these to vary between graphs then I could change the design. |
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7932 Location: Salford, UK
|
Posted: Fri Oct 28, 2016 11:48 am Post subject: |
|
|
Agustin
I have managed to get it to fail now so I will take a look at it. |
|
Back to top |
|
|
aebolzan
Joined: 06 Jul 2007 Posts: 229 Location: La Plata, Argentina
|
Posted: Fri Oct 28, 2016 12:58 pm Post subject: Re: |
|
|
PaulLaidler wrote: | Agustin
a) I have to add a call to clear_screen@ before drawing otherwise the title goes wrong.. |
yes, I forgot to mention this issue
Quote: |
In the design I have assumed that one line width and one smoothing value will apply to all graphs. So in your program the last value that is set will be applied to all graphs. If you need either of these to vary between graphs then I could change the design. |
Sorry, I did not know about this design, it was not mentioned in the notes and I assumed that this option worked as others: one option for each plot. As you say, I am also not sure if one really needs different widths for each type of line in a plot, but I think that this should be clarified in the corresponding notes.
By the way, yesterday night I was testing the use of two %pl windows using a handle (`%pl). I have to test some issues, but when I tried to plot y(n) on one %pl and z(n) on the other, it resulted that the second screen showed a black background. But I am still testing this, maybe I did something wrong.
Thanks for your work.
Agustin |
|
Back to top |
|
|
aebolzan
Joined: 06 Jul 2007 Posts: 229 Location: La Plata, Argentina
|
Posted: Fri Oct 28, 2016 1:41 pm Post subject: |
|
|
Paul,
I am testing the use of %`pl option and found that in the best case, the same data is plotted on both secreens. I have set:
i=winio@("%`pl[colour=red,N_GRAPHS=1]&",500,400,n_points,0.0d0,1.0d0,y,1)
and
i=winio@("%`pl[colour=blue,N_GRAPHS=1]&",500,400,n_points,0.0d0,1.0d0,z,2)
and
i = set_graph_style@(1,1,0)
in function draw()
and
i = set_graph_style@(2,2,0)
in function draw2()
Am I right?....what I get are two windows and only the first plot is drawn in either window 1 or window 2. I guess I am doing something wrong, but what?
Agustin |
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7932 Location: Salford, UK
|
Posted: Sat Oct 29, 2016 10:10 am Post subject: |
|
|
Agustin
I have fixed a couple of bugs and simplified the design.
Here is a link to a new set of DLLs. The download includes new mod files, instructions and sample programs.
https://www.dropbox.com/s/hgobb0wix83d8ce/newDlls13.zip?dl=0
18 Sept 2017 This link has expired.
Last edited by PaulLaidler on Mon Sep 18, 2017 1:14 pm; edited 1 time in total |
|
Back to top |
|
|
aebolzan
Joined: 06 Jul 2007 Posts: 229 Location: La Plata, Argentina
|
Posted: Sat Oct 29, 2016 5:16 pm Post subject: |
|
|
I am testing the new dll and find that things run better now. I see that you eliminated the set_graph_style@ routine. Although this routine was a good idea, in the end introduced some confusion with the old directives for %pl. Now all is simpler and straightforward. There is however a bug: when you plot two %pl, everything is OK.....only if you maintain the size of the window: when you maximise the window, the second plot appears on top at the left and with the original size. Only the first plot is increased in size (I haven't tried what happens with four plots ).
And now some comments:
a) the code you wrote in the notes does not include the statement "C_EXTERNAL WINOP@ '__winop'(INSTRING)", however you need it or the complier does not understand the winop@ statements.
b) the number of labels (and labels, and number of ticks) cannot be set by the user, they are set by clearwin and changes with the size of the window. Should it be so?. Is there any (simple) chance to modify this behaviour?
Thanks again for your work. Have a nice weekend!
Agustin |
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7932 Location: Salford, UK
|
Posted: Sat Oct 29, 2016 5:42 pm Post subject: |
|
|
Agustin
With two %pl controls the %pv does not work. We need to take the %pv out of that sample program. It is not a fault in the code but a limitation of %pv that it only works for one resizable control.
a) I have added winop@ to the .ins and mod files that are included in the download. If you use these then it should be OK.
b) Yes, the number of ticks cannot be set by the user. Also the user does not have much control over the way that the numbers at the tick marks are presented. I think that this was also true in the original %pl. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|