@@ -386,7 +386,7 @@ mod test {
386
386
#[ test]
387
387
fn test_text_draw ( ) {
388
388
let buffer: Vec < u8 > = vec ! [ ] ;
389
- let ( width, height) = ( 1000 , 600 ) ;
389
+ let ( width, height) = ( 1500 , 800 ) ;
390
390
let surface = cairo:: PsSurface :: for_stream ( width. into ( ) , height. into ( ) , buffer) ;
391
391
let cr = CairoContext :: new ( & surface) ;
392
392
let root = CairoBackend :: new ( & cr, ( width, height) )
@@ -411,6 +411,8 @@ mod test {
411
411
. draw ( )
412
412
. unwrap ( ) ;
413
413
414
+ let ( ( x1, y1) , ( x2, y2) , ( x3, y3) ) = ( ( -30 , 30 ) , ( 0 , -30 ) , ( 30 , 30 ) ) ;
415
+
414
416
for ( dy, trans) in [
415
417
FontTransform :: None ,
416
418
FontTransform :: Rotate90 ,
@@ -422,13 +424,18 @@ mod test {
422
424
{
423
425
for ( dx1, h_pos) in [ HPos :: Left , HPos :: Right , HPos :: Center ] . iter ( ) . enumerate ( ) {
424
426
for ( dx2, v_pos) in [ VPos :: Top , VPos :: Center , VPos :: Bottom ] . iter ( ) . enumerate ( ) {
425
- let x = 100_i32 + ( dx1 as i32 * 3 + dx2 as i32 ) * 100 ;
426
- let y = 100 + dy as i32 * 100 ;
427
- root. draw ( & Circle :: new ( ( x, y) , 3 , & BLACK . mix ( 0.5 ) ) ) . unwrap ( ) ;
428
- let style = TextStyle :: from ( ( "sans-serif" , 20 ) . into_font ( ) )
429
- . pos ( Pos :: new ( * h_pos, * v_pos) )
430
- . transform ( trans. clone ( ) ) ;
431
- root. draw_text ( "test" , & style, ( x, y) ) . unwrap ( ) ;
427
+ let x = 150_i32 + ( dx1 as i32 * 3 + dx2 as i32 ) * 150 ;
428
+ let y = 120 + dy as i32 * 150 ;
429
+ let draw = |x, y, text| {
430
+ root. draw ( & Circle :: new ( ( x, y) , 3 , & BLACK . mix ( 0.5 ) ) ) . unwrap ( ) ;
431
+ let style = TextStyle :: from ( ( "sans-serif" , 20 ) . into_font ( ) )
432
+ . pos ( Pos :: new ( * h_pos, * v_pos) )
433
+ . transform ( trans. clone ( ) ) ;
434
+ root. draw_text ( text, & style, ( x, y) ) . unwrap ( ) ;
435
+ } ;
436
+ draw ( x + x1, y + y1, "dood" ) ;
437
+ draw ( x + x2, y + y2, "dog" ) ;
438
+ draw ( x + x3, y + y3, "goog" ) ;
432
439
}
433
440
}
434
441
}
@@ -437,7 +444,9 @@ mod test {
437
444
let content = String :: from_utf8 ( buffer) . unwrap ( ) ;
438
445
checked_save_file ( "test_text_draw" , & content) ;
439
446
440
- assert_eq ! ( content. matches( "test" ) . count( ) , 36 ) ;
447
+ assert_eq ! ( content. matches( "dog" ) . count( ) , 36 ) ;
448
+ assert_eq ! ( content. matches( "dood" ) . count( ) , 36 ) ;
449
+ assert_eq ! ( content. matches( "goog" ) . count( ) , 36 ) ;
441
450
}
442
451
443
452
#[ test]
@@ -534,4 +543,25 @@ mod test {
534
543
let content = String :: from_utf8 ( buffer) . unwrap ( ) ;
535
544
checked_save_file ( "test_series_labels" , & content) ;
536
545
}
546
+
547
+ #[ test]
548
+ fn test_draw_pixel_alphas ( ) {
549
+ let buffer: Vec < u8 > = vec ! [ ] ;
550
+ let ( width, height) = ( 100_i32 , 100_i32 ) ;
551
+ let surface = cairo:: PsSurface :: for_stream ( width. into ( ) , height. into ( ) , buffer) ;
552
+ let cr = CairoContext :: new ( & surface) ;
553
+ let root = CairoBackend :: new ( & cr, ( width as u32 , height as u32 ) )
554
+ . unwrap ( )
555
+ . into_drawing_area ( ) ;
556
+
557
+ for i in -20 ..20 {
558
+ let alpha = i as f64 * 0.1 ;
559
+ root. draw_pixel ( ( 50 + i, 50 + i) , & BLACK . mix ( alpha) )
560
+ . unwrap ( ) ;
561
+ }
562
+
563
+ let buffer = * surface. finish_output_stream ( ) . unwrap ( ) . downcast ( ) . unwrap ( ) ;
564
+ let content = String :: from_utf8 ( buffer) . unwrap ( ) ;
565
+ checked_save_file ( "test_draw_pixel_alphas" , & content) ;
566
+ }
537
567
}
0 commit comments