@@ -184,7 +184,6 @@ static void dave2d_draw_border_complex(lv_draw_dave2d_unit_t * u, const lv_area_
184
184
inner_area = * orig_inner_area ;
185
185
186
186
if (!_lv_area_intersect (& draw_area , & outer_area , u -> base_unit .clip_area )) return ;
187
- int32_t draw_area_w = lv_area_get_width (& draw_area );
188
187
189
188
#if LV_USE_OS
190
189
lv_result_t status ;
@@ -296,35 +295,60 @@ static void dave2d_draw_border_complex(lv_draw_dave2d_unit_t * u, const lv_area_
296
295
297
296
if (blend_w > 0 ) {
298
297
if (left_side || top_side ) {
299
- result = d2_renderwedge (u -> d2_handle ,
300
- (d2_point )D2_FIX4 (core_area .x1 ),
301
- (d2_point ) D2_FIX4 (core_area .y1 ),
302
- (d2_width ) D2_FIX4 (rout ),
303
- (d2_width ) D2_FIX4 ((rout - rin )),
304
- (d2_s32 ) D2_FIX16 (0 ), // 180 Degrees
305
- (d2_s32 ) D2_FIX16 ((int16_t ) -1 ),
306
- (d2_s32 ) D2_FIX16 ((int16_t ) -1 ),//( 270 Degrees
307
- (d2_s32 ) D2_FIX16 (0 ),
308
- flags );
309
- if (D2_OK != result ) {
310
- __BKPT (0 );
298
+ lv_area_t arc_area ;
299
+ lv_area_t clip_arc ;
300
+
301
+ arc_area .x1 = core_area .x1 - rout ;
302
+ arc_area .y1 = core_area .y1 - rout ;
303
+ arc_area .x2 = core_area .x1 ;
304
+ arc_area .y2 = core_area .y1 ;
305
+
306
+ if (_lv_area_intersect (& clip_arc , & arc_area , & draw_area )) {
307
+ d2_cliprect (u -> d2_handle , (d2_border )clip_arc .x1 , (d2_border )clip_arc .y1 , (d2_border )clip_arc .x2 ,
308
+ (d2_border )clip_arc .y2 );
309
+ result = d2_renderwedge (u -> d2_handle ,
310
+ (d2_point )D2_FIX4 (core_area .x1 ),
311
+ (d2_point ) D2_FIX4 (core_area .y1 ),
312
+ (d2_width ) D2_FIX4 (rout ),
313
+ (d2_width ) D2_FIX4 ((rout - rin )),
314
+ (d2_s32 ) D2_FIX16 (0 ), // 180 Degrees
315
+ (d2_s32 ) D2_FIX16 ((int16_t ) -1 ),
316
+ (d2_s32 ) D2_FIX16 ((int16_t ) -1 ),//( 270 Degrees
317
+ (d2_s32 ) D2_FIX16 (0 ),
318
+ flags );
319
+ if (D2_OK != result ) {
320
+ __BKPT (0 );
321
+ }
311
322
}
312
323
313
324
}
314
325
315
326
if (left_side || bottom_side ) {
316
- result = d2_renderwedge (u -> d2_handle ,
317
- (d2_point )D2_FIX4 (core_area .x1 ),
318
- (d2_point ) D2_FIX4 (core_area .y2 ),
319
- (d2_width ) D2_FIX4 (rout ),
320
- (d2_width ) D2_FIX4 ((rout - rin )),
321
- (d2_s32 ) D2_FIX16 ((int16_t ) -1 ), //90 degrees
322
- (d2_s32 ) D2_FIX16 (0 ),
323
- (d2_s32 ) D2_FIX16 (0 ), //180 degrees
324
- (d2_s32 ) D2_FIX16 (1 ),
325
- flags );
326
- if (D2_OK != result ) {
327
- __BKPT (0 );
327
+ lv_area_t arc_area ;
328
+ lv_area_t clip_arc ;
329
+
330
+ arc_area .x1 = core_area .x1 - rout ;
331
+ arc_area .y1 = core_area .y2 ;
332
+ arc_area .x2 = core_area .x1 ;
333
+ arc_area .y2 = core_area .y2 + rout ;
334
+
335
+ if (_lv_area_intersect (& clip_arc , & arc_area , & draw_area )) {
336
+
337
+ d2_cliprect (u -> d2_handle , (d2_border )clip_arc .x1 , (d2_border )clip_arc .y1 , (d2_border )clip_arc .x2 ,
338
+ (d2_border )clip_arc .y2 );
339
+ result = d2_renderwedge (u -> d2_handle ,
340
+ (d2_point )D2_FIX4 (core_area .x1 ),
341
+ (d2_point ) D2_FIX4 (core_area .y2 ),
342
+ (d2_width ) D2_FIX4 (rout ),
343
+ (d2_width ) D2_FIX4 ((rout - rin )),
344
+ (d2_s32 ) D2_FIX16 ((int16_t ) -1 ), //90 degrees
345
+ (d2_s32 ) D2_FIX16 (0 ),
346
+ (d2_s32 ) D2_FIX16 (0 ), //180 degrees
347
+ (d2_s32 ) D2_FIX16 (1 ),
348
+ flags );
349
+ if (D2_OK != result ) {
350
+ __BKPT (0 );
351
+ }
328
352
}
329
353
}
330
354
@@ -337,35 +361,62 @@ static void dave2d_draw_border_complex(lv_draw_dave2d_unit_t * u, const lv_area_
337
361
338
362
if (blend_w > 0 ) {
339
363
if (right_side || top_side ) {
340
- result = d2_renderwedge (u -> d2_handle ,
341
- (d2_point )D2_FIX4 (core_area .x2 ),
342
- (d2_point ) D2_FIX4 (core_area .y1 ),
343
- (d2_width ) D2_FIX4 (rout ),
344
- (d2_width ) D2_FIX4 ((rout - rin )),
345
- (d2_s32 ) D2_FIX16 ((int16_t )1 ), // 270 Degrees
346
- (d2_s32 ) D2_FIX16 (0 ),
347
- (d2_s32 ) D2_FIX16 (0 ),// 0 degrees
348
- (d2_s32 ) D2_FIX16 (-1 ),
349
- flags );
350
- if (D2_OK != result ) {
351
- __BKPT (0 );
364
+
365
+ lv_area_t arc_area ;
366
+ lv_area_t clip_arc ;
367
+
368
+ arc_area .x1 = core_area .x2 ;
369
+ arc_area .y1 = core_area .y1 - rout ;
370
+ arc_area .x2 = core_area .x2 + rout ;
371
+ arc_area .y2 = core_area .y1 ;
372
+
373
+ if (_lv_area_intersect (& clip_arc , & arc_area , & draw_area )) {
374
+
375
+ d2_cliprect (u -> d2_handle , (d2_border )clip_arc .x1 , (d2_border )clip_arc .y1 , (d2_border )clip_arc .x2 ,
376
+ (d2_border )clip_arc .y2 );
377
+ result = d2_renderwedge (u -> d2_handle ,
378
+ (d2_point )D2_FIX4 (core_area .x2 ),
379
+ (d2_point ) D2_FIX4 (core_area .y1 ),
380
+ (d2_width ) D2_FIX4 (rout ),
381
+ (d2_width ) D2_FIX4 ((rout - rin )),
382
+ (d2_s32 ) D2_FIX16 ((int16_t )1 ), // 270 Degrees
383
+ (d2_s32 ) D2_FIX16 (0 ),
384
+ (d2_s32 ) D2_FIX16 (0 ),// 0 degrees
385
+ (d2_s32 ) D2_FIX16 (-1 ),
386
+ flags );
387
+ if (D2_OK != result ) {
388
+ __BKPT (0 );
389
+ }
352
390
}
353
391
354
392
}
355
393
356
394
if (right_side || bottom_side ) {
357
- result = d2_renderwedge (u -> d2_handle ,
358
- (d2_point )D2_FIX4 (core_area .x2 ),
359
- (d2_point ) D2_FIX4 (core_area .y2 ),
360
- (d2_width ) D2_FIX4 (rout ),
361
- (d2_width ) D2_FIX4 ((rout - rin )),
362
- (d2_s32 ) D2_FIX16 (0 ),// 0 degrees
363
- (d2_s32 ) D2_FIX16 (1 ),
364
- (d2_s32 ) D2_FIX16 (1 ),// 90 degrees
365
- (d2_s32 ) D2_FIX16 (0 ),
366
- flags );
367
- if (D2_OK != result ) {
368
- __BKPT (0 );
395
+ lv_area_t arc_area ;
396
+ lv_area_t clip_arc ;
397
+
398
+ arc_area .x1 = core_area .x2 ;
399
+ arc_area .y1 = core_area .y2 ;
400
+ arc_area .x2 = core_area .x2 + rout ;
401
+ arc_area .y2 = core_area .y2 + rout ;
402
+
403
+ if (_lv_area_intersect (& clip_arc , & arc_area , & draw_area )) {
404
+
405
+ d2_cliprect (u -> d2_handle , (d2_border )clip_arc .x1 , (d2_border )clip_arc .y1 , (d2_border )clip_arc .x2 ,
406
+ (d2_border )clip_arc .y2 );
407
+ result = d2_renderwedge (u -> d2_handle ,
408
+ (d2_point )D2_FIX4 (core_area .x2 ),
409
+ (d2_point ) D2_FIX4 (core_area .y2 ),
410
+ (d2_width ) D2_FIX4 (rout ),
411
+ (d2_width ) D2_FIX4 ((rout - rin )),
412
+ (d2_s32 ) D2_FIX16 (0 ),// 0 degrees
413
+ (d2_s32 ) D2_FIX16 (1 ),
414
+ (d2_s32 ) D2_FIX16 (1 ),// 90 degrees
415
+ (d2_s32 ) D2_FIX16 (0 ),
416
+ flags );
417
+ if (D2_OK != result ) {
418
+ __BKPT (0 );
419
+ }
369
420
}
370
421
}
371
422
}
0 commit comments