aboutsummaryrefslogblamecommitdiffstats
path: root/prompt_info/overlays.pl
blob: 47a3eefb9df861846ef7df7d5e54791ee08d2d2d (plain) (tree)
























































































                                                                         
# temp place for dumping all the stuff that doesn't belong in uberprompt.

# overlay  := { $num1 => line1, $num2 => line2 }
# line     := [ region, region, region ]
# region   := { start => x, end => y, ...? }

my $overlay;



sub _add_overlay_region {
    my ($line, $start, $end, $text, $len) = @_;
    my $region = { start => $start,
                   end => $end,
                   text => $text,
                   len => $len };

    my $o_line = $overlay->{$line};

    unless (defined $o_line) {
        $o_line = [];
        $overlay->{$line} = $o_line;
    }

    foreach my $cur_region (@$o_line) {
        if (_region_overlaps($cur_region, $region)) {
            # do something.
            print "Region overlaps";
            last;
        }
    }

    push @$o_line, $region;

}

sub _remove_overlay_region {
    my ($line, $start, $end) = @_;

    my $o_line = $overlay->{$line};
    return unless $o_line;

    my $i = 0;
    foreach my $region (@$o_line) {
        if ($region->{start} == $start && $region->{end} == $end) {
            last;
        }
        $i++;
    }
    splice @$o_line, $i, 1, (); # remove it.
}

sub _redraw_overlay {
    foreach my $line_num (sort keys %$overlay) {
        my $line = $overlay->{$line_num};

        foreach my $region (@$line) {
            Irssi::gui_printtext($region->{start}, $line_num,
                                 $region->{text});
        }
    }
}

sub init {

}
sub _clear_overlay {
    Irssi::active_win->view->redraw();
}

sub _draw_overlay_menu {

    my $w = 10;

    my @lines = (
                 '%7+' . ('-' x $w) . '+%n',
                 sprintf('%%7|%%n%*s%%7|%%n', $w, 'bacon'),
                 sprintf('|%*s|', $w, 'bacon'),
                 sprintf('|%*s|', $w, 'bacon'),
                 sprintf('|%*s|', $w, 'bacon'),
                 sprintf('|%*s|', $w, 'bacon'),
                 sprintf('|%*s|', $w, 'bacon'),
                 '%7+' . ('-' x $w) . '+%n',
                );
    my $i = 10; # start vert offset.
    for my $line (@lines) {
        Irssi::gui_printtext(int ($term_w / 2), $i++, $line);
    }
}