Introduction: As you can see from loading the skin below, Rainmeter yields the integer part (i.e. the equivalent of the TRUNC() function) of a fractional/decimal number when the :X, :Y, :XW and :YH section variable parameters are used on a meter. The 99.99 below is automatically transformed into the integer 99.
Issue: when the meter's X, Y, W and H are modified using a formula (like in this little skin that zooms in and out the red image on hover, leave, click and release), Rainmeter not only doesn't automatically convert to integers so that the zooming works properly (ok, this is to be expected, no big deal), BUT needs ROUND()-ing the results instead of TRUNC()-ing them, despite clearly needing the opposite as shown above. The skin below illustrates this, and as you can see, any hover style except the GlobalRound and Round one fail and move / shrink the red image:
Code: Select all
[Variables]
HoverScale=1.15
[Rainmeter]
Update=1000
DynamicWindowSize=1
AccurateText=1
BackgroundMode=2
SolidColor=47,47,47,255
SkinWidth=300
SkinHeight=300
---Styles---
[PlainHoverStyle]
MouseOverAction=[!SetOption #CURRENTSECTION# X ([#CURRENTSECTION#:X]-([#CURRENTSECTION#:W]*#HoverScale#-[#CURRENTSECTION#:W])/2)][!SetOption #CURRENTSECTION# Y ([#CURRENTSECTION#:Y]-([#CURRENTSECTION#:H]*#HoverScale#-[#CURRENTSECTION#:H])/2)][!SetOption #CURRENTSECTION# W ([#CURRENTSECTION#:W]*#HoverScale#)][!SetOption #CURRENTSECTION# H ([#CURRENTSECTION#:H]*#HoverScale#)][!UpdateMeter *][!Redraw]
MouseLeaveAction=[!SetOption #CURRENTSECTION# X ([#CURRENTSECTION#:X]+([#CURRENTSECTION#:W]-[#CURRENTSECTION#:W]/#HoverScale#)/2)][!SetOption #CURRENTSECTION# Y ([#CURRENTSECTION#:Y]+([#CURRENTSECTION#:H]-[#CURRENTSECTION#:H]/#HoverScale#)/2)][!SetOption #CURRENTSECTION# W ([#CURRENTSECTION#:W]/#HoverScale#)][!SetOption #CURRENTSECTION# H ([#CURRENTSECTION#:H]/#HoverScale#)][!UpdateMeter *][!Redraw]
LeftMouseDownAction=[!SetOption #CURRENTSECTION# X ([#CURRENTSECTION#:X]+([#CURRENTSECTION#:W]-[#CURRENTSECTION#:W]/#HoverScale#)/2)][!SetOption #CURRENTSECTION# Y ([#CURRENTSECTION#:Y]+([#CURRENTSECTION#:H]-[#CURRENTSECTION#:H]/#HoverScale#)/2)][!SetOption #CURRENTSECTION# W ([#CURRENTSECTION#:W]/#HoverScale#)][!SetOption #CURRENTSECTION# H ([#CURRENTSECTION#:H]/#HoverScale#)][!UpdateMeter *][!Redraw]
LeftMouseUpAction=[!SetOption #CURRENTSECTION# X ([#CURRENTSECTION#:X]-([#CURRENTSECTION#:W]*#HoverScale#-[#CURRENTSECTION#:W])/2)][!SetOption #CURRENTSECTION# Y ([#CURRENTSECTION#:Y]-([#CURRENTSECTION#:H]*#HoverScale#-[#CURRENTSECTION#:H])/2)][!SetOption #CURRENTSECTION# W ([#CURRENTSECTION#:W]*#HoverScale#)][!SetOption #CURRENTSECTION# H ([#CURRENTSECTION#:H]*#HoverScale#)][!UpdateMeter *][!Redraw]
[GlobalTruncHoverStyle]
MouseOverAction=[!SetOption #CURRENTSECTION# X (Trunc([#CURRENTSECTION#:X]-([#CURRENTSECTION#:W]*#HoverScale#-[#CURRENTSECTION#:W])/2))][!SetOption #CURRENTSECTION# Y (Trunc([#CURRENTSECTION#:Y]-([#CURRENTSECTION#:H]*#HoverScale#-[#CURRENTSECTION#:H])/2))][!SetOption #CURRENTSECTION# W (Trunc([#CURRENTSECTION#:W]*#HoverScale#))][!SetOption #CURRENTSECTION# H (Trunc([#CURRENTSECTION#:H]*#HoverScale#))][!UpdateMeter *][!Redraw]
MouseLeaveAction=[!SetOption #CURRENTSECTION# X (Trunc([#CURRENTSECTION#:X]+([#CURRENTSECTION#:W]-[#CURRENTSECTION#:W]/#HoverScale#)/2))][!SetOption #CURRENTSECTION# Y (Trunc([#CURRENTSECTION#:Y]+([#CURRENTSECTION#:H]-[#CURRENTSECTION#:H]/#HoverScale#)/2))][!SetOption #CURRENTSECTION# W (Trunc([#CURRENTSECTION#:W]/#HoverScale#))][!SetOption #CURRENTSECTION# H (Trunc([#CURRENTSECTION#:H]/#HoverScale#))][!UpdateMeter *][!Redraw]
LeftMouseDownAction=[!SetOption #CURRENTSECTION# X (Trunc([#CURRENTSECTION#:X]+([#CURRENTSECTION#:W]-[#CURRENTSECTION#:W]/#HoverScale#)/2))][!SetOption #CURRENTSECTION# Y (Trunc([#CURRENTSECTION#:Y]+([#CURRENTSECTION#:H]-[#CURRENTSECTION#:H]/#HoverScale#)/2))][!SetOption #CURRENTSECTION# W (Trunc([#CURRENTSECTION#:W]/#HoverScale#))][!SetOption #CURRENTSECTION# H (Trunc([#CURRENTSECTION#:H]/#HoverScale#))][!UpdateMeter *][!Redraw]
LeftMouseUpAction=[!SetOption #CURRENTSECTION# X (Trunc([#CURRENTSECTION#:X]-([#CURRENTSECTION#:W]*#HoverScale#-[#CURRENTSECTION#:W])/2))][!SetOption #CURRENTSECTION# Y (Trunc([#CURRENTSECTION#:Y]-([#CURRENTSECTION#:H]*#HoverScale#-[#CURRENTSECTION#:H])/2))][!SetOption #CURRENTSECTION# W (Trunc([#CURRENTSECTION#:W]*#HoverScale#))][!SetOption #CURRENTSECTION# H (Trunc([#CURRENTSECTION#:H]*#HoverScale#))][!UpdateMeter *][!Redraw]
[GlobalRoundHoverStyle]
MouseOverAction=[!SetOption #CURRENTSECTION# X (Round([#CURRENTSECTION#:X]-([#CURRENTSECTION#:W]*#HoverScale#-[#CURRENTSECTION#:W])/2))][!SetOption #CURRENTSECTION# Y (Round([#CURRENTSECTION#:Y]-([#CURRENTSECTION#:H]*#HoverScale#-[#CURRENTSECTION#:H])/2))][!SetOption #CURRENTSECTION# W (Round([#CURRENTSECTION#:W]*#HoverScale#))][!SetOption #CURRENTSECTION# H (Round([#CURRENTSECTION#:H]*#HoverScale#))][!UpdateMeter *][!Redraw]
MouseLeaveAction=[!SetOption #CURRENTSECTION# X (Round([#CURRENTSECTION#:X]+([#CURRENTSECTION#:W]-[#CURRENTSECTION#:W]/#HoverScale#)/2))][!SetOption #CURRENTSECTION# Y (Round([#CURRENTSECTION#:Y]+([#CURRENTSECTION#:H]-[#CURRENTSECTION#:H]/#HoverScale#)/2))][!SetOption #CURRENTSECTION# W (Round([#CURRENTSECTION#:W]/#HoverScale#))][!SetOption #CURRENTSECTION# H (Round([#CURRENTSECTION#:H]/#HoverScale#))][!UpdateMeter *][!Redraw]
LeftMouseDownAction=[!SetOption #CURRENTSECTION# X (Round([#CURRENTSECTION#:X]+([#CURRENTSECTION#:W]-[#CURRENTSECTION#:W]/#HoverScale#)/2))][!SetOption #CURRENTSECTION# Y (Round([#CURRENTSECTION#:Y]+([#CURRENTSECTION#:H]-[#CURRENTSECTION#:H]/#HoverScale#)/2))][!SetOption #CURRENTSECTION# W (Round([#CURRENTSECTION#:W]/#HoverScale#))][!SetOption #CURRENTSECTION# H (Round([#CURRENTSECTION#:H]/#HoverScale#))][!UpdateMeter *][!Redraw]
LeftMouseUpAction=[!SetOption #CURRENTSECTION# X (Round([#CURRENTSECTION#:X]-([#CURRENTSECTION#:W]*#HoverScale#-[#CURRENTSECTION#:W])/2))][!SetOption #CURRENTSECTION# Y (Round([#CURRENTSECTION#:Y]-([#CURRENTSECTION#:H]*#HoverScale#-[#CURRENTSECTION#:H])/2))][!SetOption #CURRENTSECTION# W (Round([#CURRENTSECTION#:W]*#HoverScale#))][!SetOption #CURRENTSECTION# H (Round([#CURRENTSECTION#:H]*#HoverScale#))][!UpdateMeter *][!Redraw]
[TruncHoverStyle]
MouseOverAction=[!SetOption #CURRENTSECTION# X ([#CURRENTSECTION#:X]-Trunc((Trunc([#CURRENTSECTION#:W]*#HoverScale#)-[#CURRENTSECTION#:W])/2))][!SetOption #CURRENTSECTION# Y ([#CURRENTSECTION#:Y]-Trunc((Trunc([#CURRENTSECTION#:H]*#HoverScale#)-[#CURRENTSECTION#:H])/2))][!SetOption #CURRENTSECTION# W (Trunc([#CURRENTSECTION#:W]*#HoverScale#))][!SetOption #CURRENTSECTION# H (Trunc([#CURRENTSECTION#:H]*#HoverScale#))][!UpdateMeter *][!Redraw]
MouseLeaveAction=[!SetOption #CURRENTSECTION# X ([#CURRENTSECTION#:X]+Trunc(([#CURRENTSECTION#:W]-Trunc([#CURRENTSECTION#:W]/#HoverScale#))/2))][!SetOption #CURRENTSECTION# Y ([#CURRENTSECTION#:Y]+Trunc(([#CURRENTSECTION#:H]-Trunc([#CURRENTSECTION#:H]/#HoverScale#))/2))][!SetOption #CURRENTSECTION# W (Trunc([#CURRENTSECTION#:W]/#HoverScale#))][!SetOption #CURRENTSECTION# H (Trunc([#CURRENTSECTION#:H]/#HoverScale#))][!UpdateMeter *][!Redraw]
LeftMouseDownAction=[!SetOption #CURRENTSECTION# X ([#CURRENTSECTION#:X]+Trunc(([#CURRENTSECTION#:W]-Trunc([#CURRENTSECTION#:W]/#HoverScale#))/2))][!SetOption #CURRENTSECTION# Y ([#CURRENTSECTION#:Y]+Trunc(([#CURRENTSECTION#:H]-Trunc([#CURRENTSECTION#:H]/#HoverScale#))/2))][!SetOption #CURRENTSECTION# W (Trunc([#CURRENTSECTION#:W]/#HoverScale#))][!SetOption #CURRENTSECTION# H (Trunc([#CURRENTSECTION#:H]/#HoverScale#))][!UpdateMeter *][!Redraw]
LeftMouseUpAction=[!SetOption #CURRENTSECTION# X ([#CURRENTSECTION#:X]-Trunc((Trunc([#CURRENTSECTION#:W]*#HoverScale#)-[#CURRENTSECTION#:W])/2))][!SetOption #CURRENTSECTION# Y ([#CURRENTSECTION#:Y]-Trunc((Trunc([#CURRENTSECTION#:H]*#HoverScale#)-[#CURRENTSECTION#:H])/2))][!SetOption #CURRENTSECTION# W (Trunc([#CURRENTSECTION#:W]*#HoverScale#))][!SetOption #CURRENTSECTION# H (Trunc([#CURRENTSECTION#:H]*#HoverScale#))][!UpdateMeter *][!Redraw]
[RoundHoverStyle]
MouseOverAction=[!SetOption #CURRENTSECTION# X ([#CURRENTSECTION#:X]-Round((Round([#CURRENTSECTION#:W]*#HoverScale#)-[#CURRENTSECTION#:W])/2))][!SetOption #CURRENTSECTION# Y ([#CURRENTSECTION#:Y]-Round((Round([#CURRENTSECTION#:H]*#HoverScale#)-[#CURRENTSECTION#:H])/2))][!SetOption #CURRENTSECTION# W (Round([#CURRENTSECTION#:W]*#HoverScale#))][!SetOption #CURRENTSECTION# H (Round([#CURRENTSECTION#:H]*#HoverScale#))][!UpdateMeter *][!Redraw]
MouseLeaveAction=[!SetOption #CURRENTSECTION# X ([#CURRENTSECTION#:X]+Round(([#CURRENTSECTION#:W]-Round([#CURRENTSECTION#:W]/#HoverScale#))/2))][!SetOption #CURRENTSECTION# Y ([#CURRENTSECTION#:Y]+Round(([#CURRENTSECTION#:H]-Round([#CURRENTSECTION#:H]/#HoverScale#))/2))][!SetOption #CURRENTSECTION# W (Round([#CURRENTSECTION#:W]/#HoverScale#))][!SetOption #CURRENTSECTION# H (Round([#CURRENTSECTION#:H]/#HoverScale#))][!UpdateMeter *][!Redraw]
LeftMouseDownAction=[!SetOption #CURRENTSECTION# X ([#CURRENTSECTION#:X]+Round(([#CURRENTSECTION#:W]-Round([#CURRENTSECTION#:W]/#HoverScale#))/2))][!SetOption #CURRENTSECTION# Y ([#CURRENTSECTION#:Y]+Round(([#CURRENTSECTION#:H]-Round([#CURRENTSECTION#:H]/#HoverScale#))/2))][!SetOption #CURRENTSECTION# W (Round([#CURRENTSECTION#:W]/#HoverScale#))][!SetOption #CURRENTSECTION# H (Round([#CURRENTSECTION#:H]/#HoverScale#))][!UpdateMeter *][!Redraw]
LeftMouseUpAction=[!SetOption #CURRENTSECTION# X ([#CURRENTSECTION#:X]-Round((Round([#CURRENTSECTION#:W]*#HoverScale#)-[#CURRENTSECTION#:W])/2))][!SetOption #CURRENTSECTION# Y ([#CURRENTSECTION#:Y]-Round((Round([#CURRENTSECTION#:H]*#HoverScale#)-[#CURRENTSECTION#:H])/2))][!SetOption #CURRENTSECTION# W (Round([#CURRENTSECTION#:W]*#HoverScale#))][!SetOption #CURRENTSECTION# H (Round([#CURRENTSECTION#:H]*#HoverScale#))][!UpdateMeter *][!Redraw]
---Meters---
[Image]
Meter=Image
MeterStyle=PlainHoverStyle
X=99.99
Y=99.99
W=99.99
H=99.99
SolidColor=247,47,47,255
DynamicVariables=1
[Text]
Meter=String
X=150
Y=150
SolidColor=0,0,0,0
FontFace=Consolas
FontColor=255,255,255,255
FontSize=16
StringAlign=CenterCenter
AntiAlias=1
Text="X = [Image:X]#CRLF#Y = [Image:Y]#CRLF#W = [Image:W]#CRLF#H = [Image:H]"
DynamicVariables=1
Bonus question: why the GlobalRound hover style above worked in the first place? If rounding is the way to go with this, shouldn't EVERY part of a formula that gets translated into an (integer) coordinate be rounded first? In other words, shouldn't the Round hover style work and GlobalRound fail?