aboutsummaryrefslogtreecommitdiffstats
path: root/prompt_info/overlays.pl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--prompt_info/overlays.pl89
1 files changed, 89 insertions, 0 deletions
diff --git a/prompt_info/overlays.pl b/prompt_info/overlays.pl
new file mode 100644
index 0000000..47a3eef
--- /dev/null
+++ b/prompt_info/overlays.pl
@@ -0,0 +1,89 @@
+# 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);
+ }
+}