@@ -1511,17 +1511,12 @@ impl ColorSpec {
15111511 & self ,
15121512 console : & mut wincolor:: Console ,
15131513 ) -> io:: Result < ( ) > {
1514- use wincolor:: Intense ;
1515-
1516- let intense = if self . intense { Intense :: Yes } else { Intense :: No } ;
1517-
1518- let fg_color = self . fg_color . as_ref ( ) . and_then ( |c| c. to_windows ( ) ) ;
1519- if let Some ( color) = fg_color {
1514+ let fg_color = self . fg_color . and_then ( |c| c. to_windows ( self . intense ) ) ;
1515+ if let Some ( ( intense, color) ) = fg_color {
15201516 console. fg ( intense, color) ?;
15211517 }
1522-
1523- let bg_color = self . bg_color . as_ref ( ) . and_then ( |c| c. to_windows ( ) ) ;
1524- if let Some ( color) = bg_color {
1518+ let bg_color = self . bg_color . and_then ( |c| c. to_windows ( self . intense ) ) ;
1519+ if let Some ( ( intense, color) ) = bg_color {
15251520 console. bg ( intense, color) ?;
15261521 }
15271522 Ok ( ( ) )
@@ -1569,20 +1564,43 @@ pub enum Color {
15691564impl Color {
15701565 /// Translate this color to a wincolor::Color.
15711566 #[ cfg( windows) ]
1572- fn to_windows ( & self ) -> Option < wincolor:: Color > {
1573- match * self {
1574- Color :: Black => Some ( wincolor:: Color :: Black ) ,
1575- Color :: Blue => Some ( wincolor:: Color :: Blue ) ,
1576- Color :: Green => Some ( wincolor:: Color :: Green ) ,
1577- Color :: Red => Some ( wincolor:: Color :: Red ) ,
1578- Color :: Cyan => Some ( wincolor:: Color :: Cyan ) ,
1579- Color :: Magenta => Some ( wincolor:: Color :: Magenta ) ,
1580- Color :: Yellow => Some ( wincolor:: Color :: Yellow ) ,
1581- Color :: White => Some ( wincolor:: Color :: White ) ,
1582- Color :: Ansi256 ( _) => None ,
1583- Color :: Rgb ( _, _, _) => None ,
1567+ fn to_windows (
1568+ self ,
1569+ intense : bool ,
1570+ ) -> Option < ( wincolor:: Intense , wincolor:: Color ) > {
1571+ use wincolor:: Intense :: { Yes , No } ;
1572+
1573+ let color = match self {
1574+ Color :: Black => wincolor:: Color :: Black ,
1575+ Color :: Blue => wincolor:: Color :: Blue ,
1576+ Color :: Green => wincolor:: Color :: Green ,
1577+ Color :: Red => wincolor:: Color :: Red ,
1578+ Color :: Cyan => wincolor:: Color :: Cyan ,
1579+ Color :: Magenta => wincolor:: Color :: Magenta ,
1580+ Color :: Yellow => wincolor:: Color :: Yellow ,
1581+ Color :: White => wincolor:: Color :: White ,
1582+ Color :: Ansi256 ( 0 ) => return Some ( ( No , wincolor:: Color :: Black ) ) ,
1583+ Color :: Ansi256 ( 1 ) => return Some ( ( No , wincolor:: Color :: Red ) ) ,
1584+ Color :: Ansi256 ( 2 ) => return Some ( ( No , wincolor:: Color :: Green ) ) ,
1585+ Color :: Ansi256 ( 3 ) => return Some ( ( No , wincolor:: Color :: Yellow ) ) ,
1586+ Color :: Ansi256 ( 4 ) => return Some ( ( No , wincolor:: Color :: Blue ) ) ,
1587+ Color :: Ansi256 ( 5 ) => return Some ( ( No , wincolor:: Color :: Magenta ) ) ,
1588+ Color :: Ansi256 ( 6 ) => return Some ( ( No , wincolor:: Color :: Cyan ) ) ,
1589+ Color :: Ansi256 ( 7 ) => return Some ( ( No , wincolor:: Color :: White ) ) ,
1590+ Color :: Ansi256 ( 8 ) => return Some ( ( Yes , wincolor:: Color :: Black ) ) ,
1591+ Color :: Ansi256 ( 9 ) => return Some ( ( Yes , wincolor:: Color :: Red ) ) ,
1592+ Color :: Ansi256 ( 10 ) => return Some ( ( Yes , wincolor:: Color :: Green ) ) ,
1593+ Color :: Ansi256 ( 11 ) => return Some ( ( Yes , wincolor:: Color :: Yellow ) ) ,
1594+ Color :: Ansi256 ( 12 ) => return Some ( ( Yes , wincolor:: Color :: Blue ) ) ,
1595+ Color :: Ansi256 ( 13 ) => return Some ( ( Yes , wincolor:: Color :: Magenta ) ) ,
1596+ Color :: Ansi256 ( 14 ) => return Some ( ( Yes , wincolor:: Color :: Cyan ) ) ,
1597+ Color :: Ansi256 ( 15 ) => return Some ( ( Yes , wincolor:: Color :: White ) ) ,
1598+ Color :: Ansi256 ( _) => return None ,
1599+ Color :: Rgb ( _, _, _) => return None ,
15841600 Color :: __Nonexhaustive => unreachable ! ( ) ,
1585- }
1601+ } ;
1602+ let intense = if intense { Yes } else { No } ;
1603+ Some ( ( intense, color) )
15861604 }
15871605
15881606 /// Parses a numeric color string, either ANSI or RGB.
0 commit comments