4
4
"image"
5
5
6
6
"github.com/FloatTech/gg"
7
- "github.com/FloatTech/imgfactory"
8
7
)
9
8
10
9
// DrawTitle 绘制标题
@@ -24,7 +23,7 @@ func (t *Title) DrawTitle() (imgs image.Image, err error) {
24
23
canvas .SetRGBA255 (0 , 0 , 0 , 153 )
25
24
canvas .Fill ()
26
25
27
- fontsize1 , fontsize2 := 108.0 + t .TitleFontOffsetPoint , 54.0 + t .TextFontOffsetPoint
26
+ fontsize1 , fontsize2 , fontsize3 := 108.0 + t .TitleFontOffsetPoint , 72 + t . TextFontOffsetPoint , 54.0 + t .TextFontOffsetPoint
28
27
// 加载size为108的字体
29
28
err = canvas .ParseFontFace (t .TitleFontData , fontsize1 )
30
29
if err != nil {
@@ -33,37 +32,35 @@ func (t *Title) DrawTitle() (imgs image.Image, err error) {
33
32
34
33
// 绘制标题
35
34
canvas .SetRGBA255 (250 , 250 , 250 , 255 )
36
- stringwight , _ := canvas .MeasureString (t .LeftTitle )
37
- canvas .DrawStringAnchored (t .LeftTitle , (220 - (fontsize1 + fontsize2 )* 72 / 96 )* 0.33 + stringwight / 2 + t .OffsetX , 30 + 40 + (220 - (fontsize1 + fontsize2 )* 72 / 96 )* 0.33 + fontsize1 * 72 / 96 * 0.5 + t .OffsetY , 0.5 , 0.5 )
35
+ canvas .DrawStringAnchored (t .LeftTitle , (220 - fontsize1 - fontsize3 )/ 3 + t .OffsetX , 30 + 40 + (220 - fontsize1 - fontsize3 )/ 3 + fontsize1 / 2 + t .OffsetY , 0 , 0.5 )
38
36
39
37
// 加载size为54的字体
40
- err = canvas .ParseFontFace (t .TextFontData , fontsize2 )
38
+ err = canvas .ParseFontFace (t .TextFontData , fontsize3 )
41
39
if err != nil {
42
40
return
43
41
}
44
42
45
43
canvas .SetRGBA255 (250 , 250 , 250 , 255 )
46
44
// 绘制副标题
47
- stringwight , _ = canvas .MeasureString (t .LeftSubtitle )
48
- canvas .DrawStringAnchored (t .LeftSubtitle , 3 + (220 - (fontsize1 + fontsize2 )* 72 / 96 )* 0.33 + stringwight / 2 + t .OffsetX , 30 + 40 + (220 - (fontsize1 + fontsize2 )* 72 / 96 )* 0.66 + fontsize1 * 72 / 96 + fontsize2 * 72 / 96 * 0.5 + t .OffsetY , 0.5 , 0.5 )
45
+ canvas .DrawStringAnchored (t .LeftSubtitle , 3 + (220 - fontsize1 - fontsize3 )/ 3 + t .OffsetX , 30 + 40 + (220 - fontsize1 - fontsize3 )/ 3 * 2 + fontsize1 + fontsize3 / 2 + t .OffsetY , 0 , 0.5 )
49
46
50
- // 加载icon并绘制
51
- var icon * imgfactory. Factory
52
- icon , err = imgfactory . LoadFirstFrame (t .ImagePath , 220 , 220 )
47
+ // 加载icon并绘制 高限制220
48
+ var icon image. Image
49
+ icon , err = gg . LoadImage (t .ImagePath )
53
50
if err != nil {
54
51
return
55
52
}
56
- canvas .DrawImage (icon .Image (), int (DefaultWidth )- icon .W (), 40 + 30 )
53
+ sc := 220 / float64 (icon .Bounds ().Dy ())
54
+ canvas .ScaleAbout (sc , sc , DefaultWidth - float64 (icon .Bounds ().Dx ())* sc / 2 , 40 + 30 + 220 / 2 )
55
+ canvas .DrawImageAnchored (icon , int (DefaultWidth )- int (float64 (icon .Bounds ().Dx ())* sc / 2 ), 40 + 30 + 220 / 2 , 0.5 , 0.5 )
56
+ canvas .Identity ()
57
57
// 加载size为72的字体
58
- fontsize1 = 72 + t .TextFontOffsetPoint
59
- err = canvas .ParseFontFace (t .TextFontData , fontsize1 )
58
+ err = canvas .ParseFontFace (t .TextFontData , fontsize2 )
60
59
if err != nil {
61
60
return
62
61
}
63
- stringwight , _ = canvas .MeasureString (t .RightTitle )
64
- canvas .DrawStringAnchored (t .RightTitle , DefaultWidth - 25 - float64 (icon .W ())- stringwight / 2 + t .OffsetX , 30 + 40 + (220 - fontsize1 * 72 / 96 * 2 )* 0.33 + fontsize1 * 72 / 96 * 0.5 + t .OffsetY , 0.5 , 0.5 )
65
- stringwight , _ = canvas .MeasureString (t .RightSubtitle )
66
- canvas .DrawStringAnchored (t .RightSubtitle , DefaultWidth - 25 - float64 (icon .W ())- stringwight / 2 + t .OffsetX , 30 + 40 + (220 - fontsize1 * 72 / 96 * 2 )* 0.66 + fontsize1 * 72 / 96 * 1.5 + t .OffsetY , 0.5 , 0.5 )
62
+ canvas .DrawStringAnchored (t .RightTitle , DefaultWidth - float64 (icon .Bounds ().Dx ())* sc - 25 + t .OffsetX , 30 + 40 + (220 - fontsize2 * 2 )/ 3 + fontsize2 / 2 + t .OffsetY , 1 , 0.5 )
63
+ canvas .DrawStringAnchored (t .RightSubtitle , DefaultWidth - float64 (icon .Bounds ().Dx ())* sc - 25 + t .OffsetX , 30 + 40 + (220 - fontsize2 * 2 )/ 3 * 2 + fontsize2 + fontsize2 / 2 + t .OffsetY , 1 , 0.5 )
67
64
68
65
imgs = canvas .Image ()
69
66
return
@@ -83,15 +80,24 @@ func (t *Title) DrawTitleWithText(info []string) (imgs image.Image, err error) {
83
80
canvas .Clear ()
84
81
85
82
// 加载icon
86
- var icon * imgfactory. Factory
87
- icon , err = imgfactory . LoadFirstFrame (t .ImagePath , 512 , 512 )
83
+ var icon image. Image
84
+ icon , err = gg . LoadImage (t .ImagePath )
88
85
if err != nil {
89
86
return
90
87
}
91
- canvas .DrawImage (icon .Image (), DefaultWidth - icon .W (), imgh - icon .H ())
88
+ sc := 0.0
89
+ if float64 (icon .Bounds ().Dy ())/ float64 (icon .Bounds ().Dx ()) > 1 {
90
+ sc = 512 / float64 (icon .Bounds ().Dy ())
91
+ } else {
92
+ sc = DefaultWidth / 2 / float64 (icon .Bounds ().Dx ())
93
+ }
94
+ canvas .ScaleAbout (sc , sc , float64 (canvas .W ()), float64 (canvas .H ()))
95
+ canvas .DrawImageAnchored (icon , canvas .W (), canvas .H (), 1 , 1 )
96
+ canvas .Identity ()
92
97
93
98
// 加载size为108的字体
94
99
fontsize1 , fontsize2 := 108.0 + t .TitleFontOffsetPoint , 54.0 + t .TextFontOffsetPoint
100
+ fsp1 , fsp2 := fontsize1 * 72 / 96 , fontsize2 * 72 / 96
95
101
err = canvas .ParseFontFace (t .TitleFontData , fontsize1 )
96
102
if err != nil {
97
103
return
@@ -100,8 +106,7 @@ func (t *Title) DrawTitleWithText(info []string) (imgs image.Image, err error) {
100
106
canvas .SetRGBA255 (15 , 15 , 15 , 255 )
101
107
102
108
// 绘制标题
103
- stringwight , _ := canvas .MeasureString (t .LeftTitle )
104
- canvas .DrawStringAnchored (t .LeftTitle , 25 + stringwight / 2 + t .OffsetX , 25 + fontsize1 * 72 / 96 * 0.5 + t .OffsetY , 0.5 , 0.5 )
109
+ canvas .DrawStringAnchored (t .LeftTitle , 25 + t .OffsetX , 25 + fsp1 / 2 + t .OffsetY , 0 , 0.5 )
105
110
106
111
// 加载size为54的字体
107
112
err = canvas .ParseFontFace (t .TextFontData , fontsize2 )
@@ -110,10 +115,9 @@ func (t *Title) DrawTitleWithText(info []string) (imgs image.Image, err error) {
110
115
}
111
116
112
117
// 绘制一系列标题
113
- stringwight , _ = canvas .MeasureString (t .LeftSubtitle )
114
- canvas .DrawStringAnchored (t .LeftSubtitle , 25 + 3 + stringwight / 2 + t .OffsetX , 25 + fontsize1 * 72 / 96 + 25 + fontsize2 * 72 / 96 * 0.5 + t .OffsetY , 0.5 , 0.5 )
115
-
116
- canvas .DrawRectangle (25 + 3 + t .OffsetX , 25 + fontsize1 * 72 / 96 + 25 + fontsize2 * 72 / 96 + 7 + t .OffsetY , stringwight , 6 )
118
+ canvas .DrawStringAnchored (t .LeftSubtitle , 25 + 3 + t .OffsetX , 25 + fsp1 + 25 + fsp2 / 2 + t .OffsetY , 0 , 0.5 )
119
+ stringwight , _ := canvas .MeasureString (t .LeftSubtitle )
120
+ canvas .DrawRectangle (25 + 3 + t .OffsetX , 25 + fsp1 + 25 + fsp2 + 7 + t .OffsetY , stringwight , 6 )
117
121
// 绘制插件开启状态
118
122
if t .IsEnabled {
119
123
canvas .SetRGBA255 (35 , 235 , 35 , 255 )
@@ -129,18 +133,16 @@ func (t *Title) DrawTitleWithText(info []string) (imgs image.Image, err error) {
129
133
return
130
134
}
131
135
132
- stringwight , _ = canvas .MeasureString (t .RightTitle )
133
- canvas .DrawStringAnchored (t .RightTitle , DefaultWidth - 40 - stringwight / 2 + t .OffsetX , 40 + fontsize2 * 72 / 96 * 0.5 + t .OffsetY , 0.5 , 0.5 )
134
- stringwight , _ = canvas .MeasureString (t .RightSubtitle )
135
- canvas .DrawStringAnchored (t .RightSubtitle , DefaultWidth - 40 - stringwight / 2 + t .OffsetX , 40 + 25 + fontsize2 * 72 / 96 * 1.5 + t .OffsetY , 0.5 , 0.5 )
136
+ canvas .DrawStringAnchored (t .RightTitle , DefaultWidth - 40 + t .OffsetX , 40 + fsp2 / 2 + t .OffsetY , 1 , 0.5 )
137
+ canvas .DrawStringAnchored (t .RightSubtitle , DefaultWidth - 40 + t .OffsetX , 40 + fsp2 + 25 + fsp2 / 2 + t .OffsetY , 1 , 0.5 )
136
138
137
139
// 加载size为38的字体
138
140
err = canvas .ParseFontFace (t .TextFontData , 38 + t .TextFontOffsetPoint )
139
141
if err != nil {
140
142
return
141
143
}
142
144
143
- y := 25 + fontsize1 * 72 / 96 + 25 + fontsize2 * 72 / 96
145
+ y := 25 + fsp1 + 25 + fsp2
144
146
for _ , text := range info {
145
147
canvas .DrawString (text , 25.0 , y + canvas .FontHeight ()* 2 )
146
148
y += 20 + canvas .FontHeight ()
@@ -154,14 +156,21 @@ func (t *Title) DrawCard() (imgs image.Image, err error) {
154
156
recw , rech := 384.0 , 256.0
155
157
canvas := gg .NewContext (int (recw ), int (rech ))
156
158
// 绘制图片
157
- var banner * imgfactory. Factory
158
- banner , err = imgfactory . LoadFirstFrame (t .ImagePath , int ( recw ) * 2 , int ( rech ) * 2 )
159
+ var banner image. Image
160
+ banner , err = gg . LoadImage (t .ImagePath )
159
161
if err == nil {
160
- canvas .DrawImage (imgfactory .Size (banner .Image (), int (recw ), int (rech )).Image (), 0 , 0 )
162
+ sc := 0.0
163
+ if float64 (banner .Bounds ().Dy ())/ float64 (banner .Bounds ().Dx ()) < rech / recw {
164
+ sc = rech / float64 (banner .Bounds ().Dy ())
165
+ } else {
166
+ sc = recw / float64 (banner .Bounds ().Dx ())
167
+ }
168
+ canvas .ScaleAbout (sc , sc , recw / 2 , rech / 2 )
169
+ canvas .DrawImageAnchored (banner , int (recw )/ 2 , int (rech )/ 2 , 0.5 , 0.5 )
170
+ canvas .Identity ()
161
171
} else {
162
- canvas .DrawRectangle (0 , 0 , recw , rech )
163
172
canvas .SetRGB255 (RandJPColor ())
164
- canvas .Fill ()
173
+ canvas .Clear ()
165
174
}
166
175
if t .IsEnabled {
167
176
canvas .DrawRectangle (0 , rech * 0.54 , recw , rech - rech * 0.54 )
@@ -174,17 +183,18 @@ func (t *Title) DrawCard() (imgs image.Image, err error) {
174
183
// 绘制插件信息
175
184
canvas .SetRGBA255 (240 , 240 , 240 , 255 )
176
185
fontsize1 , fontsize2 := 64.0 + t .TitleFontOffsetPoint , 32.0 + t .TextFontOffsetPoint
186
+ fsp1 , fsp2 := fontsize1 * 72 / 96 , fontsize2 * 72 / 96
177
187
err = canvas .ParseFontFace (t .TitleFontData , fontsize1 )
178
188
if err != nil {
179
189
return
180
190
}
181
- canvas .DrawStringAnchored (t .LeftTitle , recw / 2 + t .OffsetX , rech * 0.54 + (rech - rech * 0.54 - (fontsize1 + fontsize2 ) * 72 / 96 ) * 0.33 + fontsize1 * 72 / 96 * 0.5 + t .OffsetY , 0.5 , 0.5 )
191
+ canvas .DrawStringAnchored (t .LeftTitle , recw / 2 + t .OffsetX , rech * 0.54 + (rech - rech * 0.54 - (fsp1 + fsp2 )) / 3 + fsp1 / 2 + t .OffsetY , 0.5 , 0.5 )
182
192
183
193
err = canvas .ParseFontFace (t .TextFontData , fontsize2 )
184
194
if err != nil {
185
195
return
186
196
}
187
- canvas .DrawStringAnchored (t .LeftSubtitle , recw / 2 + t .OffsetX , rech * 0.54 + (rech - rech * 0.54 - (fontsize1 + fontsize2 ) * 72 / 96 ) * 0.66 + fontsize1 * 72 / 96 + fontsize2 * 72 / 96 * 0.5 + t .OffsetY , 0.5 , 0.5 )
197
+ canvas .DrawStringAnchored (t .LeftSubtitle , recw / 2 + t .OffsetX , rech * 0.54 + (rech - rech * 0.54 - (fsp1 + fsp2 )) / 3 * 2 + fsp1 + fsp2 / 2 + t .OffsetY , 0.5 , 0.5 )
188
198
189
199
imgs = canvas .Image ()
190
200
return
0 commit comments