diff options
Diffstat (limited to 'x11vnc/misc/ranfb.pl')
-rwxr-xr-x | x11vnc/misc/ranfb.pl | 157 |
1 files changed, 0 insertions, 157 deletions
diff --git a/x11vnc/misc/ranfb.pl b/x11vnc/misc/ranfb.pl deleted file mode 100755 index d6aa49d..0000000 --- a/x11vnc/misc/ranfb.pl +++ /dev/null @@ -1,157 +0,0 @@ - #!/bin/sh -- # A comment mentioning perl -eval 'exec perl -S $0 ${1+"$@"}' - if 0; - -# ranfb.pl: example -rawfb setup program. -# E.g. x11vnc -rawfb setup:./ranfb.pl - -# can supply WxH or W H on cmd line: -if ($ARGV[0] =~ /^(\d+)x(\d+)$/) { - $W = $1; - $H = $2; -} else { - $W = shift; - $H = shift; -} - -$W = 480 unless $W; -$H = 360 unless $H; - -$fb = "/tmp/ranfb.$$"; -open(FB, ">$fb") || die "$!"; - -$ones = "\377" x ($W * 4); -for ($y = 0; $y < $H; $y++) { - print FB $ones; -} - -if (fork) { - print "map:$fb\@${W}x${H}x32\n"; - exit 0; -} - -srand(); -while (1) { - showpic(); - if (! kill 0, $ENV{X11VNC_PID}) { - print STDERR "PID $ENV{X11VNC_PID} gone\n"; - unlink($fb); - exit; - } -} - -sub showpic { - - # 0 < x,y < 1; R1, R2, ... B4 random & scaled so R,G,B < 255: - # R(x,y) = R1 + R2 * x + R3 * y + R4 * x * y - # G(x,y) = G1 + G2 * x + G3 * y + G4 * x * y - # B(x,y) = B1 + B2 * x + B3 * y + B4 * x * y - - $minfac = 0.25; - foreach $c ('R', 'G', 'B') { - $a1 = rand() * $minfac; - $a2 = rand(); - $a3 = rand(); - $a4 = rand(); - $at = $a1 + $a2 + $a3 + $a4; - $a1 = 255 * ($a1/$at); - $a2 = 255 * ($a2/$at); - $a3 = 255 * ($a3/$at); - $a4 = 255 * ($a4/$at); - # invert axes randomly - $ax = 0; $ax = 1 if rand() < 0.5; - $ay = 0; $ay = 1 if rand() < 0.5; - eval "\$${c}1 = \$a1"; - eval "\$${c}2 = \$a2"; - eval "\$${c}3 = \$a3"; - eval "\$${c}4 = \$a4"; - eval "\$${c}x = \$ax"; - eval "\$${c}y = \$ay"; - } - - for ($i = 0; $i < 256; $i++) { - $p[$i] = pack("c", $i); - } - - $Winv = 1.0/$W; - $Hinv = 1.0/$H; - - $str = ''; - for ($y = 0; $y < $H; $y++) { - $yr = $yg = $yb = $y; - $yr = $H - $yr if $Ry; - $yg = $H - $yg if $Gy; - $yb = $H - $yb if $By; - $yr = $yr * $Hinv; - $yg = $yg * $Hinv; - $yb = $yb * $Hinv; - - $Y[3*$y+0] = $yr; - $Y[3*$y+1] = $yg; - $Y[3*$y+2] = $yb; - } - - for ($x = 0; $x < $W; $x++) { - $xr = $xg = $xb = $x; - $xr = $W - $xr if $Rx; - $xg = $W - $xg if $Gx; - $xb = $W - $xb if $Bx; - $xr = $xr * $Winv; - $xg = $xg * $Winv; - $xb = $xb * $Winv; - - $X[3*$x+0] = $xr; - $X[3*$x+1] = $xg; - $X[3*$x+2] = $xb; - } - - for ($y = 0; $y < $H; $y++) { - #$yr = $yg = $yb = $y; - #$yr = $H - $yr if $Ry; - #$yg = $H - $yg if $Gy; - #$yb = $H - $yb if $By; - #$yr = $yr * $Hinv; - #$yg = $yg * $Hinv; - #$yb = $yb * $Hinv; - - $yr = $Y[3*$y+0]; - $yg = $Y[3*$y+1]; - $yb = $Y[3*$y+2]; - - $RY1 = $R1 + $yr * $R3; - $GY1 = $G1 + $yg * $G3; - $BY1 = $B1 + $yb * $B3; - - $RY2 = $R2 + $yr * $R4; - $GY2 = $G2 + $yg * $G4; - $BY2 = $B2 + $yb * $B4; - - for ($x = 0; $x < $W; $x++) { - #$xr = $xg = $xb = $x; - #$xr = $W - $xr if $Rx; - #$xg = $W - $xg if $Gx; - #$xb = $W - $xb if $Bx; - #$xr = $xr * $Winv; - #$xg = $xg * $Winv; - #$xb = $xb * $Winv; - - $n = 3 * $x; - - #$v = int($R1 + $xr*$R2 + $yr*$R3 + $xr*$yr*$R4); - $v = int($RY1 + $X[$n]*$RY2); - $str .= $p[$v]; - - #$v = int($G1 + $xg*$G2 + $yg*$G3 + $xg*$yg*$G4); - $v = int($GY1 + $X[$n+1]*$GY2); - $str .= $p[$v]; - - #$v = int($B1 + $xb*$B2 + $yb*$B3 + $xb*$yb*$B4); - $v = int($BY1 + $X[$n+2]*$BY2); - $str .= $p[$v]; - - $str .= "\0"; - } - } - seek(FB, 0, 0); - print FB $str; -} |