The problem I have run into is that while the transformation works quite well, the rotation is a little too much. The text/numbers are not quite straight; it's at a slight angle. Enough that it doesn't look right. I'm really no good with transformation matrices, so I was hoping someone could help with some ideas.
In the test code below the measure just causes the text to spin around the circle. In reality, it won't be doing that. But it is a good way to test the idea of the text wrapping around the circle.
Code: Select all
[Rainmeter]
update=100
[Variables]
;;;;;;;;;;;;;;;;
; Notes: Changing font style would probably mess with the pixel calculations
Center_Size=50
Ring_Gap_Size=0
Text_Gap=0.03
Start_Angle=270 *(PI/180)
Num_Rings=4
Background_Color=111,111,111,100
; Generic Font Settings
Font_Face=Trebuchet MS
Font_Color1=255,255,255,120
Font_Color2=0,255,0,255
Font_Effect=BORDER
Font_Effect_Color=0,0,0,255
Font_Case=UPPER
; Year - 16 px
Year_Font_Size=12
Year_Font_Pixs=10
; Text Day
TDay_Font_Size=12
TDay_Font_Pixs=10
; Month
Month_Font_Size=12
Month_Font_Pixs=10
; Number Day
NDay_Font_Size=24
NDay_Font_Pixs=32
[NDay_Num_Chars]
Measure=CALC
Formula=(9+(22*2))/360
;;;;;;;;;;;;;;;;;;;;;;
; MEASURES
;;;;;;;;;;;;;;;;;;;;;;
[Measure_TDay]
Measure=Time
Format=%A
[Measure_Month]
Measure=Time
Format=%B
[Measure_NDay]
Measure=Time
Format=%d
[Measure_Year]
Measure=Time
Format=%Y
;;;;;;;;;;;;;;;;;;;;;;
; CALC
;;;;;;;;;;;;;;;;;;;;;;
; Used for making the Backgrounds
[MeasureBG]
Measure=Calc
Formula=100
MaxValue=100
UpdateDivider=86400
[Radius]
Measure=CALC
Formula=#Center_Size# + #Num_Rings#*#Ring_Gap_Size# + #Year_Font_Pixs# + #TDay_Font_Size# + #Month_Font_Pixs# + #NDay_Font_Pixs#
DynamicVariables=1
UpdateDivider=86400
[Circumference]
Measure=CALC
Formula=[Radius]*2
DynamicVariables=1
UpdateDivider=86400
;;;;;;;;;;;;;;;;;;;;
; Colors
;;;;;;;;;;;;;;;;;;;;
;Reset_NDay_Color=
;Set_NDay_Color=!RainmeterWriteKeyValue [Section] [Key] [Value] ("FileSpec")
;
;
;|a c tx|*|x|=|x'| x' = ax + cy + tx.
;|b d ty| |y| |y'| y' = bx + dy + ty.
;
; * a is used to scale the x value
; * d is used to scale the y value
; * c is used to skew the x value
; * b is used to skew the y value
; * TX shifts X
; * TY shifts Y
; Skew X negative, Y positive should give clockwise rotation.
;
; * a = cos(angle)
; * b = -sin(angle)
; * c = sin(angle)
; * d = cos(angle)
;
; NDay 1
[Measure_ND1]
Measure=Calc
Formula=(Counter % 100)/100
MaxValue=100
[ND1_a]
Measure=Calc
Formula=COS(Measure_ND1*2*PI)
[ND1_b]
Measure=Calc
Formula=SIN(Measure_ND1*2*PI)
[ND1_c]
Measure=Calc
Formula=-SIN(Measure_ND1*2*PI)
[ND1_TX]
Measure=Calc
Formula=[Radius] - COS(Measure_ND1*2*PI)*[Radius] + SIN(Measure_ND1*2*PI)*[Radius]
DynamicVariables=1
[ND1_TY]
Measure=Calc
Formula=[Radius] - SIN(Measure_ND1*2*PI)*[Radius] - COS(Measure_ND1*2*PI)*[Radius]
DynamicVariables=1
[ND1_X]
Measure=Calc
Formula=[Radius] - #NDay_Font_Pixs#
DynamicVariables=1
[ND1_Y]
Measure=Calc
Formula=0
DynamicVariables=1
; NDay 2
[Measure_ND2]
Measure=Calc
Formula=[Measure_ND1] + #Text_Gap#
DynamicVariables=1
[ND2_a]
Measure=Calc
Formula=COS(Measure_ND2*2*PI)
[ND2_b]
Measure=Calc
Formula=SIN(Measure_ND2*2*PI)
[ND2_c]
Measure=Calc
Formula=-SIN(Measure_ND2*2*PI)
[ND2_TX]
Measure=Calc
Formula=[Radius] - COS(Measure_ND2*2*PI)*[Radius] + SIN(Measure_ND2*2*PI)*[Radius]
DynamicVariables=1
[ND2_TY]
Measure=Calc
Formula=[Radius] - SIN(Measure_ND2*2*PI)*[Radius] - COS(Measure_ND2*2*PI)*[Radius]
DynamicVariables=1
[ND2_X]
Measure=Calc
Formula=[Radius] - #NDay_Font_Pixs#
DynamicVariables=1
[ND2_Y]
Measure=Calc
Formula=0
DynamicVariables=1
; NDay 3
[Measure_ND3]
Measure=Calc
Formula=[Measure_ND2] + #Text_Gap#
DynamicVariables=1
[ND3_a]
Measure=Calc
Formula=COS(Measure_ND3*2*PI)
[ND3_b]
Measure=Calc
Formula=SIN(Measure_ND3*2*PI)
[ND3_c]
Measure=Calc
Formula=-SIN(Measure_ND3*2*PI)
[ND3_TX]
Measure=Calc
Formula=[Radius] - COS(Measure_ND3*2*PI)*[Radius] + SIN(Measure_ND3*2*PI)*[Radius]
DynamicVariables=1
[ND3_TY]
Measure=Calc
Formula=[Radius] - SIN(Measure_ND3*2*PI)*[Radius] - COS(Measure_ND3*2*PI)*[Radius]
DynamicVariables=1
[ND3_X]
Measure=Calc
Formula=[Radius] - #NDay_Font_Pixs#
DynamicVariables=1
[ND3_Y]
Measure=Calc
Formula=0
DynamicVariables=1
;;;;;;;;;;;;;;;;;;;;;;
; METERS
;;;;;;;;;;;;;;;;;;;;;;
[MeterBackground]
Meter=ROUNDLINE
MeasureName=MeasureBG
W=[Circumference]
H=[Circumference]
StartAngle=0
RotationAngle=6.283183
LineStart=0
LineLength=[Radius]
LineColor=#Background_Color#
Solid=1
AntiAlias=1
DynamicVariables=1
[Text_ND1]
Meter=String
x=[ND1_X]
y=[ND1_Y]
FontSize=#NDay_Font_Size#
FontFace=#Font_Face#
FontColor=#Font_Color1#
StringEffect=#Font_Effect#
FontEffectColor=#Font_Effect_Color#
StringCase=#Font_Case#
StringAlign=CENTER
Text=1
TransformationMatrix=[ND1_a];[ND1_b];[ND1_c];[ND1_a];[ND1_TX];[ND1_TY]
DynamicVariables=1
[Text_ND2]
Meter=String
x=[ND2_X]
y=[ND2_Y]
FontSize=#NDay_Font_Size#
FontFace=#Font_Face#
FontColor=#Font_Color1#
StringEffect=#Font_Effect#
FontEffectColor=#Font_Effect_Color#
StringCase=#Font_Case#
StringAlign=CENTER
Text=2
TransformationMatrix=[ND2_a];[ND2_b];[ND2_c];[ND2_a];[ND2_TX];[ND2_TY]
DynamicVariables=1
[Text_ND3]
Meter=String
x=[ND3_X]
y=[ND3_Y]
FontSize=#NDay_Font_Size#
FontFace=#Font_Face#
FontColor=#Font_Color1#
StringEffect=#Font_Effect#
FontEffectColor=#Font_Effect_Color#
StringCase=#Font_Case#
StringAlign=CENTER
Text=3
TransformationMatrix=[ND3_a];[ND3_b];[ND3_c];[ND3_a];[ND3_TX];[ND3_TY]
DynamicVariables=1