@@ -110,36 +110,37 @@ impl Time {
110
110
let full_height = size;
111
111
let height = full_height / 4.0 ;
112
112
let width = height;
113
+ let offset = height / 2.0 - height / 8.0 ;
113
114
114
115
let ( response, painter) =
115
- ui. allocate_painter ( Vec2 :: new ( width, full_height) , Sense :: hover ( ) ) ;
116
+ ui. allocate_painter ( Vec2 :: new ( width, full_height + offset * 2.0 ) , Sense :: hover ( ) ) ;
116
117
let color = ctx. style ( ) . visuals . text_color ( ) ;
117
118
118
119
let c = response. rect . center ( ) ;
119
120
let r = height / 2.0 - 0.5 ;
120
121
121
122
if number == 1 || number == 3 || number == 5 || number == 7 || number == 9 {
122
- painter. circle_filled ( c + Vec2 :: new ( 0.0 , height * 1.50 ) , r, color) ;
123
+ painter. circle_filled ( c + Vec2 :: new ( 0.0 , height * 1.50 + offset ) , r, color) ;
123
124
} else {
124
- painter. circle_filled ( c + Vec2 :: new ( 0.0 , height * 1.50 ) , r / 2.5 , color) ;
125
+ painter. circle_filled ( c + Vec2 :: new ( 0.0 , height * 1.50 + offset ) , r / 2.5 , color) ;
125
126
}
126
127
127
128
if number == 2 || number == 3 || number == 6 || number == 7 {
128
- painter. circle_filled ( c + Vec2 :: new ( 0.0 , height * 0.50 ) , r, color) ;
129
+ painter. circle_filled ( c + Vec2 :: new ( 0.0 , height * 0.50 + offset ) , r, color) ;
129
130
} else {
130
- painter. circle_filled ( c + Vec2 :: new ( 0.0 , height * 0.50 ) , r / 2.5 , color) ;
131
+ painter. circle_filled ( c + Vec2 :: new ( 0.0 , height * 0.50 + offset ) , r / 2.5 , color) ;
131
132
}
132
133
133
134
if number == 4 || number == 5 || number == 6 || number == 7 {
134
- painter. circle_filled ( c + Vec2 :: new ( 0.0 , -height * 0.50 ) , r, color) ;
135
+ painter. circle_filled ( c + Vec2 :: new ( 0.0 , -height * 0.50 + offset ) , r, color) ;
135
136
} else if max_power > 2 {
136
- painter. circle_filled ( c + Vec2 :: new ( 0.0 , -height * 0.50 ) , r / 2.5 , color) ;
137
+ painter. circle_filled ( c + Vec2 :: new ( 0.0 , -height * 0.50 + offset ) , r / 2.5 , color) ;
137
138
}
138
139
139
140
if number == 8 || number == 9 {
140
- painter. circle_filled ( c + Vec2 :: new ( 0.0 , -height * 1.50 ) , r, color) ;
141
+ painter. circle_filled ( c + Vec2 :: new ( 0.0 , -height * 1.50 + offset ) , r, color) ;
141
142
} else if max_power > 3 {
142
- painter. circle_filled ( c + Vec2 :: new ( 0.0 , -height * 1.50 ) , r / 2.5 , color) ;
143
+ painter. circle_filled ( c + Vec2 :: new ( 0.0 , -height * 1.50 + offset ) , r / 2.5 , color) ;
143
144
}
144
145
}
145
146
@@ -154,9 +155,10 @@ impl Time {
154
155
let full_height = size;
155
156
let height = full_height / 4.0 ;
156
157
let width = height * 1.5 ;
158
+ let offset = height / 2.0 - height / 8.0 ;
157
159
158
160
let ( response, painter) =
159
- ui. allocate_painter ( Vec2 :: new ( width, full_height) , Sense :: hover ( ) ) ;
161
+ ui. allocate_painter ( Vec2 :: new ( width, full_height + offset * 2.0 ) , Sense :: hover ( ) ) ;
160
162
let color = ctx. style ( ) . visuals . text_color ( ) ;
161
163
let stroke = Stroke :: new ( 1.0 , color) ;
162
164
@@ -174,22 +176,25 @@ impl Time {
174
176
} ;
175
177
176
178
if max_power == 2 {
177
- let mut rect = response. rect . shrink ( stroke. width ) ;
179
+ let mut rect = response
180
+ . rect
181
+ . shrink2 ( Vec2 :: new ( stroke. width , stroke. width + offset) ) ;
178
182
rect. set_height ( rect. height ( ) - height * 2.0 ) ;
179
- rect = rect. translate ( Vec2 :: new ( 0.0 , height * 2.0 ) ) ;
183
+ rect = rect. translate ( Vec2 :: new ( 0.0 , height * 2.0 + offset ) ) ;
180
184
painter. rect_stroke ( rect, round_all, stroke, StrokeKind :: Outside ) ;
181
185
} else if max_power == 3 {
182
- let mut rect = response. rect . shrink ( stroke. width ) ;
186
+ let mut rect = response
187
+ . rect
188
+ . shrink2 ( Vec2 :: new ( stroke. width , stroke. width + offset) ) ;
183
189
rect. set_height ( rect. height ( ) - height) ;
184
- rect = rect. translate ( Vec2 :: new ( 0.0 , height) ) ;
190
+ rect = rect. translate ( Vec2 :: new ( 0.0 , height + offset ) ) ;
185
191
painter. rect_stroke ( rect, round_all, stroke, StrokeKind :: Outside ) ;
186
192
} else {
187
- painter. rect_stroke (
188
- response. rect . shrink ( stroke. width ) ,
189
- round_all,
190
- stroke,
191
- StrokeKind :: Outside ,
192
- ) ;
193
+ let mut rect = response
194
+ . rect
195
+ . shrink2 ( Vec2 :: new ( stroke. width , stroke. width + offset) ) ;
196
+ rect = rect. translate ( Vec2 :: new ( 0.0 , 0.0 + offset) ) ;
197
+ painter. rect_stroke ( rect, round_all, stroke, StrokeKind :: Outside ) ;
193
198
}
194
199
195
200
let mut rect_bin = response. rect ;
@@ -198,15 +203,15 @@ impl Time {
198
203
if number == 1 || number == 5 || number == 9 {
199
204
rect_bin. set_height ( height) ;
200
205
painter. rect_filled (
201
- rect_bin. translate ( Vec2 :: new ( 0.0 , height * 3.0 ) ) ,
206
+ rect_bin. translate ( Vec2 :: new ( stroke . width , height * 3.0 + offset * 2 .0) ) ,
202
207
round_bottom,
203
208
color,
204
209
) ;
205
210
}
206
211
if number == 2 {
207
212
rect_bin. set_height ( height) ;
208
213
painter. rect_filled (
209
- rect_bin. translate ( Vec2 :: new ( 0.0 , height * 2.0 ) ) ,
214
+ rect_bin. translate ( Vec2 :: new ( stroke . width , height * 2.0 + offset * 2.0 ) ) ,
210
215
if max_power == 2 {
211
216
round_top
212
217
} else {
@@ -218,15 +223,15 @@ impl Time {
218
223
if number == 3 {
219
224
rect_bin. set_height ( height * 2.0 ) ;
220
225
painter. rect_filled (
221
- rect_bin. translate ( Vec2 :: new ( 0.0 , height * 2.0 ) ) ,
226
+ rect_bin. translate ( Vec2 :: new ( stroke . width , height * 2.0 + offset * 2.0 ) ) ,
222
227
round_bottom,
223
228
color,
224
229
) ;
225
230
}
226
231
if number == 4 || number == 5 {
227
232
rect_bin. set_height ( height) ;
228
233
painter. rect_filled (
229
- rect_bin. translate ( Vec2 :: new ( 0.0 , height * 1.0 ) ) ,
234
+ rect_bin. translate ( Vec2 :: new ( stroke . width , height * 1.0 + offset * 2 .0) ) ,
230
235
if max_power == 3 {
231
236
round_top
232
237
} else {
@@ -238,7 +243,7 @@ impl Time {
238
243
if number == 6 {
239
244
rect_bin. set_height ( height * 2.0 ) ;
240
245
painter. rect_filled (
241
- rect_bin. translate ( Vec2 :: new ( 0.0 , height * 1.0 ) ) ,
246
+ rect_bin. translate ( Vec2 :: new ( stroke . width , height * 1.0 + offset * 2 .0) ) ,
242
247
if max_power == 3 {
243
248
round_top
244
249
} else {
@@ -250,7 +255,7 @@ impl Time {
250
255
if number == 7 {
251
256
rect_bin. set_height ( height * 3.0 ) ;
252
257
painter. rect_filled (
253
- rect_bin. translate ( Vec2 :: new ( 0.0 , height) ) ,
258
+ rect_bin. translate ( Vec2 :: new ( stroke . width , height + offset * 2.0 ) ) ,
254
259
if max_power == 3 {
255
260
round_all
256
261
} else {
@@ -261,7 +266,11 @@ impl Time {
261
266
}
262
267
if number == 8 || number == 9 {
263
268
rect_bin. set_height ( height) ;
264
- painter. rect_filled ( rect_bin. translate ( Vec2 :: new ( 0.0 , 0.0 ) ) , round_top, color) ;
269
+ painter. rect_filled (
270
+ rect_bin. translate ( Vec2 :: new ( stroke. width , 0.0 + offset * 2.0 ) ) ,
271
+ round_top,
272
+ color,
273
+ ) ;
265
274
}
266
275
}
267
276
}
0 commit comments