Jaime Méndez wrote: ↑September 14th, 2022, 4:56 am
I managed to work with .ico type for image files using "ImageMagick" so Rainmeter wouldn't take that long to render icons. It seems to work fine, but I have an stupid problem. I couldn't parse path of each "MyPhoto.jpg" in folder and path of each "EXpandable\icon%%.ico" in Messure [MeasureFileJPG%%]
Actually, you have more than one problem, none of them stupid:
- you replicate measures or meters instead of just replacing them, e.g.
[MeasureFileType%%] vs
[MeasureJPG%%]
- you try to use ImageMagick via RunCommand, which will take
at least as much time as Rainmeter resizing the images internally in memory
- you try to use ImageMagick via RunCommand, when there's already an ImageMagick plugin for Rainmeter, called
MagickMeter (see its documentation)
Now, I'm not saying running things via RunCommand is not useful, quite the contrary, but you should use it only when there are no other alternatives, especially considering that everything involving drives is many times slower than doing things in memory (even if using the fast CMD.EXE for that).
Here is the template using MagickMeter:
Code: Select all
[Variables]
//
; INDEX_%%={((%%+1)+Clamp(((%%+1)-#Root_Position#),0,1))-1+#Index_Offset#}
TILE_%%_X_O={(#PX#+#Tiles_Step_X#*( (((%%+1)+Clamp(((%%+1)-#Root_Position#),0,1))-1+#Index_Offset#) % #Tiles_Len#))}
TILE_%%_Y_O={(#PY#+#Tiles_Step_Y#*Floor( (((%%+1)+Clamp(((%%+1)-#Root_Position#),0,1))-1+#Index_Offset#) / #Tiles_Len#))}
TILE_%%_X=({#TILE_F_X#}+(#TILE_%%_X_O#-{#TILE_F_X#})*[MeasureTimerCalc:])
TILE_%%_Y=({#TILE_F_Y#}+(#TILE_%%_Y_O#-{#TILE_F_Y#})*[MeasureTimerCalc:])
TILE_%%_SELECTION=0//
TILE_F_SELECTION=0
Update_Tiles=//[!UpdateMeter "MeterTile%%"][!UpdateMeter "MeterTileIcon%%"][!UpdateMeter "MeterTileText%%"][!UpdateMeter "MeterTileSelection%%"][!UpdateMeter "MeterTileHitbox%%"]//
Update=[!UpdateMeasure "MeasureSlide"][!UpdateMeasure "MeasureTimerCalc"][!UpdateMeter "MeterHitbox"]#Update_Tiles#[!Redraw]
FullyOppened=//[!UpdateMeter "MeterTileHitbox%%"]//[!Redraw]
ClosingStart=//[!UpdateMeter "MeterTileHitbox%%"]//[!Redraw]
//
TILE_F_X_O={#TILE_F_X#}
TILE_F_Y_O={#TILE_F_Y#}
[MeasureFileIcon%%]
Measure=Plugin
Plugin=FileView
Path=[MeasureFolder]
Index={%%+1}
Type=Icon
IconSize=Large
; OnChangeAction=[!SetOption MeterTileIcon%% ImageName [MeasureFileIcon%%]]
[MeasureFileName%%]
Measure=Plugin
Plugin=FileView
Path=[MeasureFolder]
Index={%%+1}
Type=FileName
OnChangeAction=[!SetOption MeterTileText%% Text [MeasureFileName%%]]
[MeasureFilePath%%]
Measure=Plugin
Plugin=FileView
Path=[MeasureFolder]
Index={%%+1}
Type=FilePath
; OnChangeAction=[!SetOption MeasureFileMagi%% Image "File [MeasureFilePath%%] | Resize 48,48"]
OnChangeAction=[!SetOption MeasureFileMagi%% Image "File [MeasureFilePath%%] | RenderSize 48,48"]
[MeasureFileMagi%%]
Measure=Plugin
Plugin=MagickMeter.dll
; ExportTo=image%%.jpg
[MeasureFileType%%]
Measure=Plugin
Plugin=FileView
Path=[MeasureFolder]
Index={%%+1}
Type=FileType
IfMatch=(?i)^(?:png|jpg|bmp|gif|tif|webP|ico)$
IfMatchAction=[!SetOption MeterTileIcon%% MeasureName "MeasureFileMagi%%"]
IfNotMatchAction=[!SetOption MeterTileIcon%% MeasureName "MeasureFileIcon%%"]
IfMatchMode=1
[MeterTile%%]
Meter=Shape
Shape=Rectangle #TILE_%%_X#,#TILE_%%_Y#,{#Tile_Width#},{#Tile_Height#} | Fill Color 0,0,0,(255*[MeasureTimerCalc:]) | Stroke Color 0, 0, 0, (255*[MeasureTimerCalc:])
DynamicVariables=1
[MeterTileHitbox%%]
Meter=Shape
Shape=Rectangle #TILE_%%_X_O#,#TILE_%%_Y_O#,{#Tile_Width#},{#Tile_Height#} | Fill Color 0,0,0,1 | Stroke Color 0, 0, 0, 1
Hidden=(Clamp(Floor(1-[MeasureTimerCalc:]*2),0,1))
DynamicVariables=1
[MeterTileSelection%%]
Meter=Shape
Shape=Rectangle (#TILE_%%_X#+(#Tile_Width#-#Tiles_Selection_Width#)/2),#TILE_%%_Y#,(#Tiles_Selection_Width#),(#Tiles_Text_OY#+[MeterTileText%%:H]) | Fill Color #Hover_Selection_Color#,(#Hover_Selection_Opacity#*#TILE_%%_SELECTION#*[MeasureTimerCalc:]) | Stroke Color #Hover_Selection_Color#, (#Hover_Selection_Border_Opacity#*#TILE_%%_SELECTION#*[MeasureTimerCalc:])
DynamicVariables=1
Hidden=(Floor(1-[MeasureTimerCalc:]))
Group=SelectionGroup
LeftMouseUpAction=["[MeasureFilePath%%]"]
MouseOverAction=[!SetVariable TILE_%%_SELECTION 1][!UpdateMeter "MeterTileSelection%%"][!Redraw]
MouseLeaveAction=[!SetVariable TILE_%%_SELECTION 0][!UpdateMeter "MeterTileSelection%%"][!Redraw]
[MeterTileIcon%%]
Meter=Image
; ImageName=[MeasureFileIcon%%]
MeasureName=MeasureFileIcon%%
X=(#TILE_%%_X#+#Tiles_Icon_OX#)
Y=(#TILE_%%_Y#+#Tiles_Icon_OY#)
W=#Tiles_Icon_Size#
H=#Tiles_Icon_Size#
Container=MeterTile%%
DynamicVariables=1
PreserveAspectRatio=1
[MeterTileText%%]
Meter=String
Text=[MeasureFileName%%]
X=(#TILE_%%_X#+#Tiles_Text_OX#)
Y=(#TILE_%%_Y#+#Tiles_Text_OY#)
ClipStringW=#Tiles_Text_Width#
ClipStringH=#Tiles_Text_Height#
FontColor=255,255,255,255
StringAlign=CenterTop
ClipString=2
FontSize=9.5
AntiAlias=0
; FontFace=Segoe UI
StringEffect=Shadow
FontEffectColor=0,0,0,255
Container=MeterTile%%
DynamicVariables=1
//
I intentionally used a !SetOption bang to set things in the
[MeasureFileMagi%%] measure, because, like most of khanhas plugins, the MagickMeter one has a little problem with setting
DynamicVariables=1, with the CPU usage increasing a lot in that case.
Anyway, other than that, feel free to chose what option works best, fastest, and suits your case, I left some more or less equivalent options in the file for conveniency, like the
Resize one or the
ExportTo. I continue to believe that whatever choice you make, you'd still have a delay when resizing, irrespective if it's done by Rainmeter itself or another software via a plugin. For that to happen, files must be read from drives, images decoded, resizing computed and (optionally, but not preferably, as it would increase the delay as well) the result written on drives - all of which take time.