Since CodeCode already finished his work, here's a fully automated quadrilater progress bar for the less math savvy, adjustable to any:

It not only builds the shape without any effort from the user (other than providing the coordinates via input or scroll on their boxes, and direction via scroll on the shape itself), but it provides the code for it too.

Code: Select all

```
[Variables]
PMAX=100
X1=20
Y1=0
X2=0
Y2=70
X3=275
Y3=45
X4=270
Y4=30
FCF=0,0,0,128
FCP=0,255,0,128
SCF=255,255,255,255
SCP=255,0,0,255
SWF=2
SWP=2
Code=""
[Rainmeter]
Update=25
DynamicWindowSize=1
AccurateText=1
---Measures---
[X1Input]
Measure=Plugin
Plugin=InputText
X=([X1Data:X])
Y=([X1Data:Y])
W=([X1Data:W])
H=([X1Data:H])
SolidColor=0,0,0,255
FontFace=Tahoma
FontColor=255,255,255,255
FontSize=10
DefaultValue="#X1#"
Command1=[!SetVariable X1 "$UserInput$"]
Command2=[!UpdateMeasure *][!UpdateMeter *][!Redraw]
DynamicVariables=1
[X2Input]
Measure=Plugin
Plugin=InputText
X=([X2Data:X])
Y=([X2Data:Y])
W=([X2Data:W])
H=([X2Data:H])
SolidColor=0,0,0,255
FontFace=Tahoma
FontColor=255,255,255,255
FontSize=10
DefaultValue="#X2#"
Command1=[!SetVariable X2 "$UserInput$"]
Command2=[!UpdateMeasure *][!UpdateMeter *][!Redraw]
DynamicVariables=1
[X3Input]
Measure=Plugin
Plugin=InputText
X=([X3Data:X])
Y=([X3Data:Y])
W=([X3Data:W])
H=([X3Data:H])
SolidColor=0,0,0,255
FontFace=Tahoma
FontColor=255,255,255,255
FontSize=10
DefaultValue="#X3#"
Command1=[!SetVariable X3 "$UserInput$"]
Command2=[!UpdateMeasure *][!UpdateMeter *][!Redraw]
DynamicVariables=1
[X4Input]
Measure=Plugin
Plugin=InputText
X=([X4Data:X])
Y=([X4Data:Y])
W=([X4Data:W])
H=([X4Data:H])
SolidColor=0,0,0,255
FontFace=Tahoma
FontColor=255,255,255,255
FontSize=10
DefaultValue="#X4#"
Command1=[!SetVariable X4 "$UserInput$"]
Command2=[!UpdateMeasure *][!UpdateMeter *][!Redraw]
DynamicVariables=1
[Y1Input]
Measure=Plugin
Plugin=InputText
X=([Y1Data:X])
Y=([Y1Data:Y])
W=([Y1Data:W])
H=([Y1Data:H])
SolidColor=0,0,0,255
FontFace=Tahoma
FontColor=255,255,255,255
FontSize=10
DefaultValue="#Y1#"
Command1=[!SetVariable Y1 "$UserInput$"]
Command2=[!UpdateMeasure *][!UpdateMeter *][!Redraw]
DynamicVariables=1
[Y2Input]
Measure=Plugin
Plugin=InputText
X=([Y2Data:X])
Y=([Y2Data:Y])
W=([Y2Data:W])
H=([Y2Data:H])
SolidColor=0,0,0,255
FontFace=Tahoma
FontColor=255,255,255,255
FontSize=10
DefaultValue="#Y2#"
Command1=[!SetVariable Y2 "$UserInput$"]
Command2=[!UpdateMeasure *][!UpdateMeter *][!Redraw]
DynamicVariables=1
[Y3Input]
Measure=Plugin
Plugin=InputText
X=([Y3Data:X])
Y=([Y3Data:Y])
W=([Y3Data:W])
H=([Y3Data:H])
SolidColor=0,0,0,255
FontFace=Tahoma
FontColor=255,255,255,255
FontSize=10
DefaultValue="#Y3#"
Command1=[!SetVariable Y3 "$UserInput$"]
Command2=[!UpdateMeasure *][!UpdateMeter *][!Redraw]
DynamicVariables=1
[Y4Input]
Measure=Plugin
Plugin=InputText
X=([Y4Data:X])
Y=([Y4Data:Y])
W=([Y4Data:W])
H=([Y4Data:H])
SolidColor=0,0,0,255
FontFace=Tahoma
FontColor=255,255,255,255
FontSize=10
DefaultValue="#Y4#"
Command1=[!SetVariable Y4 "$UserInput$"]
Command2=[!UpdateMeasure *][!UpdateMeter *][!Redraw]
DynamicVariables=1
[DX2]
Measure=Calc
Formula=(#X3#-#X2#)
UpdateDivider=-1
DynamicVariables=1
[DY2]
Measure=Calc
Formula=(#Y3#-#Y2#)
UpdateDivider=-1
DynamicVariables=1
[DX1]
Measure=Calc
Formula=(#X4#-#X1#)
UpdateDivider=-1
DynamicVariables=1
[DY1]
Measure=Calc
Formula=(#Y4#-#Y1#)
UpdateDivider=-1
DynamicVariables=1
[Code]
Measure=String
String=Meter=Shape[\x000d][\x000a]Shape=Path FramePath | Fill Color #FCF# | StrokeWidth #SWF# | StrokeColor #SCF#[\x000d][\x000a]FramePath=#X1#,#Y1# | LineTo #X2#,#Y2# | LineTo #X3#,#Y3# | LineTo #X4#,#Y4# | ClosePath 1[\x000d][\x000a]Shape2=Path ProgressPath | Fill Color #FCP# | StrokeWidth #SWP# | StrokeColor #SCP#[\x000d][\x000a]ProgressPath=#X1#,#Y1# | LineTo #X2#,#Y2# | LineTo (#X2#+[DX2]*[*Progress*]/#PMAX#),(#Y2#+[DY2]*[*Progress*]/#PMAX#) | LineTo (#X1#+[DX1]*[*Progress*]/#PMAX#),(#Y1#+[DY1]*[*Progress*]/#PMAX#) | ClosePath 1[\x000d][\x000a]DynamicVariables=1
UpdateDivider=-1
RegExpSubstitute=1
Substitute="(?:\+\-|\-\+)":"-"
DynamicVariables=1
[CodeInput]
Measure=Plugin
Plugin=InputText
X=([CodeData:X])
Y=([CodeData:Y])
W=([CodeData:W])
H=([CodeData:H])
SolidColor=0,0,0,255
FontFace=Tahoma
FontColor=255,255,255,255
FontSize=10
DefaultValue=[Code]
Command1=[!SetVariable Code "$UserInput$"]
Command2=[!UpdateMeasure *][!UpdateMeter *][!Redraw]
DynamicVariables=1
[Progress]
Measure=Loop
StartValue=0
EndValue=#PMAX#
Increment=1
DynamicVariables=1
---Styles---
[TextStyle]
FontFace=Tahoma
FontColor=255,255,255,255
FontEffectColor=0,0,0,255
StringEffect=Shadow
FontWeight=700
FontSize=10
SolidColor=0,0,0,0
AntiAlias=1
---Meters---
[X1]
Meter=String
MeterStyle=TextStyle
Text="#CURRENTSECTION#:"
UpdateDivider=-1
[X1Data]
Meter=String
MeterStyle=TextStyle
X=0R
Y=0r
W=34
SolidColor=0,0,0,255
Text="#X1#"
UpdateDivider=-1
MouseScrollUpAction=[!SetVariable X1 (Clamp((#X1#+1),0,9999))][!UpdateMeasure *][!UpdateMeter *][!Redraw]
MouseScrollDownAction=[!SetVariable X1 (Clamp((#X1#-1),0,9999))][!UpdateMeasure *][!UpdateMeter *][!Redraw]
LeftMouseUpAction=[!CommandMeasure X1Input "ExecuteBatch All"]
DynamicVariables=1
[Y1]
Meter=String
MeterStyle=TextStyle
X=5R
Y=0r
Text="#CURRENTSECTION#:"
UpdateDivider=-1
[Y1Data]
Meter=String
MeterStyle=TextStyle
X=0R
Y=0r
W=34
SolidColor=0,0,0,255
Text="#Y1#"
UpdateDivider=-1
MouseScrollUpAction=[!SetVariable Y1 (Clamp((#Y1#+1),0,9999))][!UpdateMeasure *][!UpdateMeter *][!Redraw]
MouseScrollDownAction=[!SetVariable Y1 (Clamp((#Y1#-1),0,9999))][!UpdateMeasure *][!UpdateMeter *][!Redraw]
LeftMouseUpAction=[!CommandMeasure Y1Input "ExecuteBatch All"]
DynamicVariables=1
[X2]
Meter=String
MeterStyle=TextStyle
X=30R
Y=0r
Text="#CURRENTSECTION#:"
UpdateDivider=-1
[X2Data]
Meter=String
MeterStyle=TextStyle
X=0R
Y=0r
W=34
SolidColor=0,0,0,255
Text="#X2#"
UpdateDivider=-1
MouseScrollUpAction=[!SetVariable X2 (Clamp((#X2#+1),0,9999))][!UpdateMeasure *][!UpdateMeter *][!Redraw]
MouseScrollDownAction=[!SetVariable X2 (Clamp((#X2#-1),0,9999))][!UpdateMeasure *][!UpdateMeter *][!Redraw]
LeftMouseUpAction=[!CommandMeasure X2Input "ExecuteBatch All"]
DynamicVariables=1
[Y2]
Meter=String
MeterStyle=TextStyle
X=5R
Y=0r
Text="#CURRENTSECTION#:"
UpdateDivider=-1
[Y2Data]
Meter=String
MeterStyle=TextStyle
X=0R
Y=0r
W=34
SolidColor=0,0,0,255
Text="#Y2#"
UpdateDivider=-1
MouseScrollUpAction=[!SetVariable Y2 (Clamp((#Y2#+1),0,9999))][!UpdateMeasure *][!UpdateMeter *][!Redraw]
MouseScrollDownAction=[!SetVariable Y2 (Clamp((#Y2#-1),0,9999))][!UpdateMeasure *][!UpdateMeter *][!Redraw]
LeftMouseUpAction=[!CommandMeasure Y2Input "ExecuteBatch All"]
DynamicVariables=1
[X3]
Meter=String
MeterStyle=TextStyle
X=30R
Y=0r
Text="#CURRENTSECTION#:"
UpdateDivider=-1
[X3Data]
Meter=String
MeterStyle=TextStyle
X=0R
Y=0r
W=34
SolidColor=0,0,0,255
Text="#X3#"
UpdateDivider=-1
MouseScrollUpAction=[!SetVariable X3 (Clamp((#X3#+1),0,9999))][!UpdateMeasure *][!UpdateMeter *][!Redraw]
MouseScrollDownAction=[!SetVariable X3 (Clamp((#X3#-1),0,9999))][!UpdateMeasure *][!UpdateMeter *][!Redraw]
LeftMouseUpAction=[!CommandMeasure X3Input "ExecuteBatch All"]
DynamicVariables=1
[Y3]
Meter=String
MeterStyle=TextStyle
X=5R
Y=0r
Text="#CURRENTSECTION#:"
UpdateDivider=-1
[Y3Data]
Meter=String
MeterStyle=TextStyle
X=0R
Y=0r
W=34
SolidColor=0,0,0,255
Text="#Y3#"
UpdateDivider=-1
MouseScrollUpAction=[!SetVariable Y3 (Clamp((#Y3#+1),0,9999))][!UpdateMeasure *][!UpdateMeter *][!Redraw]
MouseScrollDownAction=[!SetVariable Y3 (Clamp((#Y3#-1),0,9999))][!UpdateMeasure *][!UpdateMeter *][!Redraw]
LeftMouseUpAction=[!CommandMeasure Y3Input "ExecuteBatch All"]
DynamicVariables=1
[X4]
Meter=String
MeterStyle=TextStyle
X=30R
Y=0r
Text="#CURRENTSECTION#:"
UpdateDivider=-1
[X4Data]
Meter=String
MeterStyle=TextStyle
X=0R
Y=0r
W=34
SolidColor=0,0,0,255
Text="#X4#"
UpdateDivider=-1
MouseScrollUpAction=[!SetVariable X4 (Clamp((#X4#+1),0,9999))][!UpdateMeasure *][!UpdateMeter *][!Redraw]
MouseScrollDownAction=[!SetVariable X4 (Clamp((#X4#-1),0,9999))][!UpdateMeasure *][!UpdateMeter *][!Redraw]
LeftMouseUpAction=[!CommandMeasure X4Input "ExecuteBatch All"]
DynamicVariables=1
[Y4]
Meter=String
MeterStyle=TextStyle
X=5R
Y=0r
Text="#CURRENTSECTION#:"
UpdateDivider=-1
[Y4Data]
Meter=String
MeterStyle=TextStyle
X=0R
Y=0r
W=34
SolidColor=0,0,0,255
Text="#Y4#"
UpdateDivider=-1
MouseScrollUpAction=[!SetVariable Y4 (Clamp((#Y4#+1),0,9999))][!UpdateMeasure *][!UpdateMeter *][!Redraw]
MouseScrollDownAction=[!SetVariable Y4 (Clamp((#Y4#-1),0,9999))][!UpdateMeasure *][!UpdateMeter *][!Redraw]
LeftMouseUpAction=[!CommandMeasure Y4Input "ExecuteBatch All"]
DynamicVariables=1
[CodeData]
Meter=String
MeterStyle=TextStyle
Y=10R
SolidColor=0,0,0,255
MeasureName=Code
Text="%1"
UpdateDivider=-1
LeftMouseUpAction=[!CommandMeasure CodeInput "ExecuteBatch All"]
DynamicVariables=1
[Trapezoid]
Meter=Shape
X=(Max((Max(#SWF#,#SWP#)/2),25))r
Y=(Max((Max(#SWF#,#SWP#)/2),25))R
Shape=Path FramePath | Fill Color #FCF# | StrokeWidth #SWF# | StrokeColor #SCF#
FramePath=#X1#,#Y1# | LineTo #X2#,#Y2# | LineTo #X3#,#Y3# | LineTo #X4#,#Y4# | ClosePath 1
Shape2=Path ProgressPath | Fill Color #FCP# | StrokeWidth #SWP# | StrokeColor #SCP#
ProgressPath=#X1#,#Y1# | LineTo #X2#,#Y2# | LineTo (#X2#+(#X3#-#X2#)*[Progress]/#PMAX#),(#Y2#+(#Y3#-#Y2#)*[Progress]/#PMAX#) | LineTo (#X1#+(#X4#-#X1#)*[Progress]/#PMAX#),(#Y1#+(#Y4#-#Y1#)*[Progress]/#PMAX#) | ClosePath 1
LeftMouseUpAction=[!TogglePauseMeasure Progress][!UpdateMeter *][!Redraw]
MouseScrollUpAction=[!SetVariable X1 #X4#][!SetVariable Y1 #Y4#][!SetVariable X2 #X1#][!SetVariable Y2 #Y1#][!SetVariable X3 #X2#][!SetVariable Y3 #Y2#][!SetVariable X4 #X3#][!SetVariable Y4 #Y3#][!CommandMeasure Progress "Reset"][!UpdateMeasure *][!UpdateMeter *][!Redraw]
MouseScrollDownAction=[!SetVariable X1 #X2#][!SetVariable Y1 #Y2#][!SetVariable X2 #X3#][!SetVariable Y2 #Y3#][!SetVariable X3 #X4#][!SetVariable Y3 #Y4#][!SetVariable X4 #X1#][!SetVariable Y4 #Y1#][!CommandMeasure Progress "Reset"][!UpdateMeasure *][!UpdateMeter *][!Redraw]
DynamicVariables=1
[X1Y1]
Meter=String
MeterStyle=TextStyle
X=([Trapezoid:X]+#X1#)
Y=([Trapezoid:Y]+#Y1#)
StringAlign=CenterCenter
Text="(#X1#,#Y1#)"
DynamicVariables=1
[X2Y2]
Meter=String
MeterStyle=TextStyle
X=([Trapezoid:X]+#X2#)
Y=([Trapezoid:Y]+#Y2#)
StringAlign=CenterCenter
Text="(#X2#,#Y2#)"
DynamicVariables=1
[X3Y3]
Meter=String
MeterStyle=TextStyle
X=([Trapezoid:X]+#X3#)
Y=([Trapezoid:Y]+#Y3#)
StringAlign=CenterCenter
Text="(#X3#,#Y3#)"
DynamicVariables=1
[X4Y4]
Meter=String
MeterStyle=TextStyle
X=([Trapezoid:X]+#X4#)
Y=([Trapezoid:Y]+#Y4#)
StringAlign=CenterCenter
Text="(#X4#,#Y4#)"
DynamicVariables=1
```

, but having the progress bar advancing from the top edge instead, via a simple scroll on the shape)

All you need to do after playing with the parameters is to copy paste the code by clicking on its box, or, alternatively, either copying or writing the

variable from the log or to another .INI or .INC file.