| File: | blib/lib/Image/Caa/DriverCurses.pm |
| Coverage: | 83.3% |
| line | stmt | bran | cond | sub | time | code |
|---|---|---|---|---|---|---|
| 1 | package Image::Caa::DriverCurses; | |||||
| 2 | ||||||
| 3 | 1 1 1 | 5 2 7 | use strict; | |||
| 4 | 1 1 1 | 5 2 5 | use warnings; | |||
| 5 | 1 0 0 | 3 | use Curses; | |||
| 6 | ||||||
| 7 | sub new { | |||||
| 8 | my ($class, $args) = @_; | |||||
| 9 | ||||||
| 10 | my $self = bless {}, $class; | |||||
| 11 | ||||||
| 12 | $self->{window} = $args->{window}; | |||||
| 13 | $self->{has_color} = 0; | |||||
| 14 | ||||||
| 15 | $self->{color_pair_next} = 1; | |||||
| 16 | $self->{color_pairs} = {}; | |||||
| 17 | ||||||
| 18 | return $self; | |||||
| 19 | } | |||||
| 20 | ||||||
| 21 | sub init { | |||||
| 22 | my ($self) = @_; | |||||
| 23 | ||||||
| 24 | $self->{has_color} = has_colors(); | |||||
| 25 | ||||||
| 26 | start_color() if $self->{has_color}; | |||||
| 27 | } | |||||
| 28 | ||||||
| 29 | sub set_color{ | |||||
| 30 | my ($self, $fg, $bg) = @_; | |||||
| 31 | ||||||
| 32 | return unless $self->{has_color}; | |||||
| 33 | ||||||
| 34 | my $bright = $fg > 7; | |||||
| 35 | ||||||
| 36 | $fg -= 8 if $fg > 7; | |||||
| 37 | $bg -= 8 if $bg > 7; | |||||
| 38 | ||||||
| 39 | my $key = "$fg:$bg"; | |||||
| 40 | ||||||
| 41 | if (!defined $self->{color_pairs}->{$key}){ | |||||
| 42 | ||||||
| 43 | my $pr = $self->{color_pair_next}; | |||||
| 44 | $self->{color_pair_next}++; | |||||
| 45 | ||||||
| 46 | init_pair($pr, $fg, $bg); | |||||
| 47 | $self->{color_pairs}->{$key} = $pr; | |||||
| 48 | ||||||
| 49 | print "new pair: $key\n"; | |||||
| 50 | } | |||||
| 51 | ||||||
| 52 | $self->{window}->attron( $bright ? A_BOLD : A_DIM ); | |||||
| 53 | $self->{window}->attron(COLOR_PAIR($self->{color_pairs}->{$key})); | |||||
| 54 | } | |||||
| 55 | ||||||
| 56 | sub putchar{ | |||||
| 57 | my ($self, $x, $y, $outch) = @_; | |||||
| 58 | ||||||
| 59 | $self->{window}->addch($y, $x, $outch); | |||||
| 60 | } | |||||
| 61 | ||||||
| 62 | sub fini { | |||||
| 63 | my ($self) = @_; | |||||
| 64 | } | |||||
| 65 | ||||||
| 66 | ||||||
| 67 | 1; | |||||