It is currently June 20th, 2024, 11:55 am

MirageWeather

Weather skins
User avatar
balala
Rainmeter Sage
Posts: 16317
Joined: October 11th, 2010, 6:27 pm
Location: Gheorgheni, Romania

Re: MirageWeather

Post by balala »

Yincognito wrote: May 31st, 2023, 7:31 pm Ah, ok - no problem at all. This came to me after looking at your preview screenshot, where due to how points are positioned, it seemed at first that the lowest red point incorrectly referred to the 11 degree value (because it's closer to the point), when it actually corresponds to the 8 degree one (which is farther from the point) - at least that was my initial visual impression. Of course, once you're used to the positional style, it becomes less confusing.
Yep, you're perfectly right those points are closer to the temperature values of the next day. Didn't realize so far this might be a problem for some. But there are some vertical lines to delimit the area of each day, this is why I thought it's more or less clear which point to which day do belong to.
Yincognito wrote: May 31st, 2023, 7:31 pm I was in the process of implementing the T1 / T2 formulas, but stopped because it seemed to give longer than desired formulas (at least for my taste) in native Rainmeter. That being said, in Lua it would be as easy as converting the Javascript code on that page to Lua in a function and providing the out_tangent_1.x / out_tangent_1.y / out_tangent_2.x / out_tangent_2.y values as the ControlX1 / ControlY1 / ControlX2 / ControlY2 for the cubic curve Shape meter. The only question is whether the control points for the beginning and end dot in the graph should be simulated, because to the coordinates of a control point require knowledge of at least 3 graph point coordinates.

P.S. It's my first time working with curve Shape meters too, but I kinda like it... :D :oops:
To be honest I'd prefer not to involve a lua script for this. Plain Rainmeter code would be much more nice in my opinion. Anyway I need time to study how this can be implemented. But unfortunately, now that summer came, I have extremely little time. But let's see, sooner or later I hope I'm gonna try this out.
User avatar
Yincognito
Rainmeter Sage
Posts: 7458
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: MirageWeather

Post by Yincognito »

balala wrote: May 31st, 2023, 8:27 pmPlain Rainmeter code would be much more nice in my opinion. Anyway I need time to study how this can be implemented. But unfortunately, now that summer came, I have extremely little time. But let's see, sooner or later I hope I'm gonna try this out.
Take your time. In case it helps, I already done it, via my string manipulation method in plain Rainmeter... :great:

Code:

Code: Select all

; Reference: https://apoorvaj.io/cubic-bezier-through-four-points/

[Variables]
BGSize=600
Style0=Lines
Style1=Curve
Style=0
IdxMx=5
Index=0
Points0=((200)),((300));300,100;400,300;300,500;200,300;300,100;((400)),((300));
Points1=((65*1-1)),((26*5));(65*1),(26*5);(65*2),(19*5);(65*3),(16*5);(65*4),(18*5);((65*4+1)),((18*5));
Points2=((65*1-1)),((13*5));(65*1),(13*5);(65*2),(8*5);(65*3),(11*5);(65*4),(13*5);((65*4+1)),((13*5));
Points3=((65*1-1)),((25*5));(65*1),(25*5);(65*2),(27*5);(65*3),(27*5);(65*4),(20*5);((65*4+1)),(20*5);
Points4=((65*1-1)),((12*5));(65*1),(12*5);(65*2),(14*5);(65*3),(13*5);(65*4),(9*5);((65*4+1)),((9*5));
Alpha=0.5

[Rainmeter]
Update=1000
AccurateText=1
DynamicWindowSize=1

---Measures---

[PathL]
Group=PathGroup
Measure=String
String=[#Points[#Index]]
UpdateDivider=-1
RegExpSubstitute=1
Substitute="(?U)(.*),(.*);":" | LineTo \1,\2","^ [|] LineTo ":""
DynamicVariables=1

[PathC]
Group=PathGroup
Measure=String
String=[#Points[#Index]]
UpdateDivider=-1
RegExpSubstitute=1
Substitute="(?U)(.*),(.*);(?=(.*),(.*);(.*),(.*);(.*),(.*);)":"PointAt \3,\4 | CurveTo \5,\6,(((Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)**2*\5-(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)**2*\1+(2*(Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)**2+3*(Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)*(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)+(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)**2)*\3)/(3*(Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)*((Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)+(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)))),(((Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)**2*\6-(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)**2*\2+(2*(Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)**2+3*(Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)*(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)+(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)**2)*\4)/(3*(Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)*((Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)+(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)))),(((Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)**2*\3-(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)**2*\7+(2*(Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)**2+3*(Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)*(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)+(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)**2)*\5)/(3*(Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)*((Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)+(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)))),(((Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)**2*\4-(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)**2*\8+(2*(Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)**2+3*(Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)*(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)+(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)**2)*\6)/(3*(Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)*((Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)+(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)))) | ","^PointAt (.*) [|].*$":"\1","(?U)PointAt .* [|] ":"","(?:^\\\d+|\\\d+$)":""
DynamicVariables=1

---Meters---

[Background]
Meter=Shape
Shape=Rectangle 0,0,#BGSize#,#BGSize# | StrokeWidth 0 | Stroke Color 0,0,0,0 | Fill Color 0,0,0,128
UpdateDivider=-1
MouseScrollUpAction=[!SetVariable Index ((#IdxMx#+#Index#-1)%#IdxMx#)][!UpdateMeasure *][!UpdateMeter *][!Redraw]
MouseScrollDownAction=[!SetVariable Index ((#IdxMx#+#Index#+1)%#IdxMx#)][!UpdateMeasure *][!UpdateMeter *][!Redraw]
LeftMouseUpAction=[!SetVariable Style (1-#Style#)][!ToggleMeter GraphLines][!ToggleMeter GraphCurve][!UpdateMeasure *][!UpdateMeter *][!Redraw]
DynamicVariables=1

[GraphLines]
Meter=Shape
Shape=Path PathL | StrokeWidth 2 | Stroke Color 0,255,0,255 | Fill Color 87,149,212,0
PathL=[PathL]
UpdateDivider=-1
DynamicVariables=1

[GraphCurve]
Hidden=1
Meter=Shape
Shape=Path PathC | StrokeWidth 2 | Stroke Color 0,255,0,255 | Fill Color 87,149,212,0
PathC=[PathC]
UpdateDivider=-1
DynamicVariables=1

[Info]
Meter=String
X=#BGSize#
Y=#BGSize#
SolidColor=0,0,0,1
FontColor=255,255,255,255
FontEffectColor=0,0,0,255
StringEffect=Shadow
StringAlign=RightBottom
FontFace=Consolas
FontSize=16
AntiAlias=1
Text=Graph: No. #Index##CRLF#Style: [#Style[#Style]]
UpdateDivider=-1
DynamicVariables=1
Preview:
ezgif.com-optimize.gif
I included more examples / graphs (both "open" and "closed" visually) to better see the effects - you can scroll through them with the mouse wheel and click to toggle between lines and curve styles for the graph. The set of points is defined as an "X1,Y1;X2,Y2;..." virtually unlimited list, which is then converted to strings of either line or curve paths in the two measures, to be used in the two graph meters to display the results, along with some short info for conveniency. As expected, since a cubic Bezier curve needs at least 4 points to compute the control points for the 2 points in the middle, the set of points need two "fake" / "phantom" points at the beginning and end of the set in order to have the graph extend to its "real" / "actual" beginning and end - I marked them by enclosing them in double round brackets in [Variables], for better awareness of the principle (e.g. if you want to graph between P1 and P7, you need to create proper P0 and P8 along the desired path).

In your case (or any case except this "showcase" one, for that matter), only the [PathC] measure and [GraphCurve] meter equivalents are needed, assuming you set the String option of the former to the desired comma (,) and semicolon (;) separated list of points and add the "phantom" points at the beggining and end of the list by simply duplicating the actual beginning and end points and subtracting or adding 1 to one of the coordinates, respectively, like illustrated in [Variables]. I could have automated this in the Substitute, of course, but the thing is that for other cases (like my rhombus, intended to show that any closed plygon can be similarly smoothed and curved) the machine cannot anticipate the proper position for the phantom points because they depend on what the user wants the shape to look like (e.g. for the "closed" rhombus I had to continue the "enclosing" of the shape to get the egg / ellipse like shape, otherwise it would have turned into a raindrop like shape).

Feel free to use this if you want. Obviously, it can be done via formulas entered manually in the Path option, but considering the length such a formula can have in plain Rainmeter, the automated version - itself using a very simple but very long Substitute, is the better choice IMHO, since you don't need to write it anymore, just enter the points and stuff gets done. The Lua choice helps in writing less too, but of course, why bother when it can be all done in a single String measure with zero effort (at least from anyone else but me, lol).
You do not have the required permissions to view the files attached to this post.
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth
User avatar
balala
Rainmeter Sage
Posts: 16317
Joined: October 11th, 2010, 6:27 pm
Location: Gheorgheni, Romania

Re: MirageWeather

Post by balala »

Yincognito wrote: June 1st, 2023, 1:14 pm Take your time. In case it helps, I already done it, via my string manipulation method in plain Rainmeter... :great:
Alright, thanks for the code. I'm gonna check it, but not now, due some other things I have to deal with right now. But thanks anyway.
User avatar
Yincognito
Rainmeter Sage
Posts: 7458
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: MirageWeather

Post by Yincognito »

balala wrote: June 1st, 2023, 3:02 pm Alright, thanks for the code. I'm gonna check it, but not now, due some other things I have to deal with right now. But thanks anyway.
No problem. ;-) Lua version coming as well.
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth
User avatar
Yincognito
Rainmeter Sage
Posts: 7458
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: MirageWeather

Post by Yincognito »

Yincognito wrote: June 1st, 2023, 3:37 pm No problem. ;-) Lua version coming as well.
Here are the simpleton versions of both native Rainmeter and Lua for curving a skeleton line segment path using cubic Bezier Shapes that pass through those path points...

INI Version:

Code: Select all

[Variables]
Alpha=0.5

[Rainmeter]
Update=1000
AccurateText=1
DynamicWindowSize=1

---Measures---

[GraphPath]
Measure=String
String=200,300;300,100;400,300;300,500;200,300;300,100;400,300;
UpdateDivider=-1
RegExpSubstitute=1
Substitute="(?U)(.*),(.*);(?=(.*),(.*);(.*),(.*);(.*),(.*);)":"PointAt \3,\4 | CurveTo \5,\6,(((Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)**2*\5-(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)**2*\1+(2*(Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)**2+3*(Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)*(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)+(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)**2)*\3)/(3*(Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)*((Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)+(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)))),(((Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)**2*\6-(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)**2*\2+(2*(Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)**2+3*(Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)*(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)+(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)**2)*\4)/(3*(Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)*((Sqrt((\3-\1)**2+(\4-\2)**2)**#Alpha#)+(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)))),(((Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)**2*\3-(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)**2*\7+(2*(Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)**2+3*(Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)*(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)+(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)**2)*\5)/(3*(Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)*((Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)+(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)))),(((Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)**2*\4-(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)**2*\8+(2*(Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)**2+3*(Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)*(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)+(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)**2)*\6)/(3*(Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)*((Sqrt((\7-\5)**2+(\8-\6)**2)**#Alpha#)+(Sqrt((\5-\3)**2+(\6-\4)**2)**#Alpha#)))) | ","^PointAt (.*) [|].*$":"\1","(?U)PointAt .* [|] ":"","(?:^\\\d+|\\\d+$)":""
DynamicVariables=1

---Meters---

[Background]
Meter=Shape
Shape=Rectangle 0,0,600,600 | StrokeWidth 0 | Stroke Color 0,0,0,0 | Fill Color 0,0,0,128
Shape2=Path GraphPath | StrokeWidth 2 | Stroke Color 0,255,0,255 | Fill Color 87,149,212,0
GraphPath=[GraphPath]
UpdateDivider=-1
DynamicVariables=1
LUA Version:

Code: Select all

function Distance(a, b)
  return math.sqrt((a.x - b.x) ^ 2 + (a.y - b.y) ^ 2)
end

function Curve(point, alpha)
  local length = {Distance(point[2], point[1]) ^ alpha, Distance(point[3], point[2]) ^ alpha, Distance(point[4], point[3]) ^ alpha}
  local a = {length[1] ^ 2, length[3] ^ 2}
  local b = {length[2] ^ 2, length[2] ^ 2}
  local c = {2 * length[1] ^ 2 + 3 * length[1] * length[2] + length[2] ^ 2, 2 * length[3] ^ 2 + 3 * length[3] * length[2] + length[2] ^ 2}
  local d = {3 * length[1] * (length[1] + length[2]), 3 * length[3] * (length[3] + length[2])}
  local controlpoint = {{x = (a[1] * point[3].x - b[1] * point[1].x + c[1] * point[2].x) / d[1], y = (a[1] * point[3].y - b[1] * point[1].y + c[1] * point[2].y) / d[1]},
                        {x = (a[2] * point[2].x - b[2] * point[4].x + c[2] * point[3].x) / d[2], y = (a[2] * point[2].y - b[2] * point[4].y + c[2] * point[3].y) / d[2]}}
  return {point[3].x, point[3].y, controlpoint[1].x, controlpoint[1].y, controlpoint[2].x, controlpoint[2].y}
end

function Graph(...)
  if #arg < 4 * 2 + 1 then print('A minimum of 8 coordinates for at least 4 points plus the alpha value are required to build the curve graph. Only ' .. #arg .. ' parameters received - aborted.'); return true end
  local graphpath = arg[3] .. ',' .. arg[4]
  for i = 0, math.floor((#arg - 1) / 2) - 4 do
    graphpath = graphpath .. ' | CurveTo ' .. table.concat(Curve({{x = arg[i * 2 + 1], y = arg[i * 2 + 2]}, {x = arg[i * 2 + 3], y = arg[i * 2 + 4]},
                                                                  {x = arg[i * 2 + 5], y = arg[i * 2 + 6]}, {x = arg[i * 2 + 7], y = arg[i * 2 + 8]}}, arg[#arg]), ',')
  end
  return graphpath
end

Code: Select all

[Rainmeter]
Update=1000
AccurateText=1
DynamicWindowSize=1

---Measures---

[GraphPath]
Measure=Script
ScriptFile=#@#GraphPath.lua
UpdateDivider=-1

---Meters---

[Background]
Meter=Shape
Shape=Rectangle 0,0,600,600 | StrokeWidth 0 | Stroke Color 0,0,0,0 | Fill Color 0,0,0,128
Shape2=Path GraphPath | StrokeWidth 2 | Stroke Color 0,255,0,255 | Fill Color 0,128,255,0
GraphPath=[&GraphPath:Graph(200,300,300,100,400,300,300,500,200,300,300,100,400,300,0.5)]
UpdateDivider=-1
DynamicVariables=1
The Lua version does pretty much the same thing as the Ini one, bar the fact that it's probably easier to understand than the regex substitutions performed in the Ini version. There might be other ways to do this, of course, but personally I didn't find a more compact and straightforward way to handle an unlimited list of values in plain Rainmeter other than the string substitute route, which checks all boxes in terms of functionality.

Anyway, I'll probably edit this later on in order to move the relevant info and samples to a Tips & Tricks thread and link to it, since I believe it has a lot of potential and applicability in other scenarios, not necessarily related to building a smooth function graph, but also to nicer drawing capabilities. For example, one can now use curves to draw something, but it's mostly guesswork as to where the curve "should" be drawn. With the above, precise curved drawing starting from a basic line segment skeleton should be possible, since the curves will pass through the said points in the path of the shape. Its only small inconvenient is the need to add 2 "phantom" points at the start and end of the point list so that the curves extend up to the actual desired start and end of the drawing, but that's mostly insignificant and shouldn't be a problem.
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth
User avatar
balala
Rainmeter Sage
Posts: 16317
Joined: October 11th, 2010, 6:27 pm
Location: Gheorgheni, Romania

Re: MirageWeather

Post by balala »

Yincognito wrote: June 1st, 2023, 1:14 pm Take your time. In case it helps, I already done it, via my string manipulation method in plain Rainmeter... :great:
Thank you for the code. It did help. I created the smoother curve, now testing and have to improve a few things, but it seems to be working.
So, thanks once again for the posted code. I didn't dig into the lua code, don't think it is needed or wanted (by me definitely not).
User avatar
Yincognito
Rainmeter Sage
Posts: 7458
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: MirageWeather

Post by Yincognito »

balala wrote: June 6th, 2023, 6:05 pm Thank you for the code. It did help. I created the smoother curve, now testing and have to improve a few things, but it seems to be working.
So, thanks once again for the posted code. I didn't dig into the lua code, don't think it is needed or wanted (by me definitely not).
Excellent! :great:

I have another - hopefully - pleasant surprise for you (consider them as apologies for missing the Easter greetings, you know what I'm talking about): I solved (all) your problems here, while working for the thing described in the spoiler here. 8-)

Let me know if you're still interested in it, because I'm now enjoying testing the whole thing, but the script is still written somewhat specific to the latter objective (it can be made much more general with minimal effort though, to basically allow ANY exchange of variables / bangs / whatever between an AutoIt script and Rainmeter, while only running the executable once, except when dynamically changing variables). ;-)
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth
User avatar
balala
Rainmeter Sage
Posts: 16317
Joined: October 11th, 2010, 6:27 pm
Location: Gheorgheni, Romania

Re: MirageWeather

Post by balala »

Yincognito wrote: June 6th, 2023, 8:00 pm I have another - hopefully - pleasant surprise for you (consider them as apologies for missing the Easter greetings, you know what I'm talking about):
Yep, I know. But don't worry, was not a problem.
Yincognito wrote: June 6th, 2023, 8:00 pm I solved (all) your problems here, while working for the thing described in the spoiler here. 8-)

Let me know if you're still interested in it, because I'm now enjoying testing the whole thing, but the script is still written somewhat specific to the latter objective (it can be made much more general with minimal effort though, to basically allow ANY exchange of variables / bangs / whatever between an AutoIt script and Rainmeter, while only running the executable once, except when dynamically changing variables). ;-)
Well, that's an extremely old topic. To be honest I need to reactivate my thoughts about it. Don't really know anymore what has been done there, but probably taking a closer look, I'm gonna remember. But not this evening.
But thanks anyway for your (extremely useful) work.
User avatar
Yincognito
Rainmeter Sage
Posts: 7458
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: MirageWeather

Post by Yincognito »

balala wrote: June 6th, 2023, 8:50 pm Yep, I know. But don't worry, was not a problem.
I know, but I always try to repay my debts, good or bad. Your gesture was a nice surprise for me, so I feel the need to give back some nice stuff as well. :)
balala wrote: June 6th, 2023, 8:50 pm Well, that's an extremely old topic. To be honest I need to reactivate my thoughts about it. Don't really know anymore what has been done there, but probably taking a closer look, I'm gonna remember. But not this evening.
But thanks anyway for your (extremely useful) work.
Yeah, I realize that. Like always, take your time, there's no rush - whenever you feel comfortable or willing to. If not, I will probably post the adjusted MultiWindowState code / skin for the latter thread sometime tomorrow, since anyone interested and reasonably knowledgeable should be able to turn the approach into a more general one, or adapt it for his case.
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth
User avatar
Yincognito
Rainmeter Sage
Posts: 7458
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: MirageWeather

Post by Yincognito »

balala wrote: June 6th, 2023, 8:50 pmWell, that's an extremely old topic. To be honest I need to reactivate my thoughts about it. Don't really know anymore what has been done there, but probably taking a closer look, I'm gonna remember. But not this evening.
Alright, I decided to leave it according to what the most recent topic was about, but it can be easily changed by editing the GetResult() function in the script and recompiling, if needed. With the proper adjustments it will do whatever you want, being a "bridge" between Rainmeter and AutoIt - not exactly what jsmorley mentioned in your old thread, but close enough to achieve the desired objective. Feel free to check it out any time you like, no pressure. ;-)
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth