From 3af9f105d65e3316435f665d43f8aea8d60cd639 Mon Sep 17 00:00:00 2001 From: Bartosz Kostrzewa Date: Wed, 17 Nov 2010 14:50:21 +0100 Subject: [PATCH] trying out the new alpha mixing --- clients/plasma.py | 14 ++++++- frameserver/Server.cpp | 79 +++++++++++++++++++++++++++++++++++---- frameserver/servertest.py | 2 +- 3 files changed, 85 insertions(+), 10 deletions(-) diff --git a/clients/plasma.py b/clients/plasma.py index ff9d12f..b140303 100644 --- a/clients/plasma.py +++ b/clients/plasma.py @@ -24,12 +24,17 @@ UDPSock.bind((outgoing_if, local_port)) segments = open('segments','r') -alpha = 1 +alpha = chr(155) z_buffer = chr(1) + "\n" + width = 7 height = 12 +segments = 8 +segwidth = 12 +segchannels = 4 + # Send messages sleeptime = 0.03 t = 0 @@ -42,8 +47,13 @@ while (1): for i in range(0,width): for j in range(0,height): pixel = fabs(sin(2*pi*(float(i)/width)+t*frequency)*sin(2*pi*(float(j)/height)+t*frequency)) - data = data + chr(int(254*pixel)) + chr(alpha) + data = data + chr(int(254*pixel)) + alpha data = data + "\n" + for i in range(0,segwidth): + for j in range(0,segments): + for a in range(0,segchannels): + data += chr(254) + data += "\n" t+=1 #print( data ) #data += segments.read() diff --git a/frameserver/Server.cpp b/frameserver/Server.cpp index 6df2f64..3b13501 100644 --- a/frameserver/Server.cpp +++ b/frameserver/Server.cpp @@ -193,7 +193,7 @@ void Server::mix() frame.segments[w][n][a] = 0; } } - } + } // zero out frame for(int x = 0; x < size; x++) { @@ -203,10 +203,10 @@ void Server::mix() { for(int j = 0; j < WIDTH; j++) { - for(int a = 0; a < CHANNELS; a++) + for(int a = 0; a < CHANNELS-1; a++) { // do something interesting here - frame.windows[i][j][a] = temp_frame.windows[i][j][a]; + frame.windows[i][j][a] = frame.windows[i][j][a] + (float)temp_frame.windows[i][j][CHANNELS-1]/254*temp_frame.windows[i][j][a]; } } } @@ -215,9 +215,9 @@ void Server::mix() { for(int n = 0;n < SEGNUM; n++) { - for(int a = 0; a < SEGCHANNELS; a++) + for(int a = 0; a < SEGCHANNELS-1; a++) { - frame.segments[w][n][a] = temp_frame.segments[w][n][a]; + frame.segments[w][n][a] = frame.segments[w][n][a] + (float)temp_frame.segments[w][n][SEGCHANNELS-1]/254*temp_frame.segments[w][n][a]; } } } @@ -257,6 +257,10 @@ void Server::console() keypad(stdscr,TRUE); cbreak(); noecho(); + start_color(); + init_pair(1,COLOR_RED,COLOR_BLACK); + init_pair(2,COLOR_GREEN,COLOR_BLACK); + init_pair(3,COLOR_BLUE,COLOR_BLACK); { Glib::Mutex::Lock lock(mutex_); consoleinit = true; @@ -319,6 +323,7 @@ void Server::input() * implement their own locking and they need ncurses to be initialised */ void Server::console_printframe(frame_t _frame) { + int x1,y1,x2,y2; // output the current screen contents for(int i = 0; i < HEIGHT; i++) { @@ -333,9 +338,69 @@ void Server::console_printframe(frame_t _frame) { for(int n = 0; n < SEGNUM; n++) { - for(int a = 0; a < SEGCHANNELS; a++) + switch(n) + { + case 0: + x1 = 2; + x2 = 3; + y1 = 7; + y2 = 7; + break; + case 1: + x1 = 0; + x2 = 0; + y1 = 5; + y2 = 6; + break; + case 2: + x1 = 2; + x2 = 3; + y1 = 4; + y2 = 4; + break; + case 3: + x1 = 0; + x2 = 0; + y1 = 2; + y2 = 3; + break; + case 4: + x1 = 2; + x2 = 3; + y1 = 1; + y2 = 1; + break; + case 5: + x1 = 4; + x2 = 4; + y1 = 2; + y2 = 3; + break; + case 6: + x1 = 4; + x2 = 4; + y1 = 5; + y2 = 6; + break; + case 7: + x1 = 5; + x2 = 5; + y1 = 7; + y2 = 7; + break; + } // switch + + for(int a = 0; a < SEGCHANNELS-1; a++) { - mvprintw(HEIGHT+3+w,(n*SEGCHANNELS)+a,"%c", _frame.segments[w][n][a]); + attron(COLOR_PAIR(a+1)); + mvprintw( HEIGHT+2+a*8+y1, + w*7+x1, + "%c",brtoc(_frame.segments[w][n][a])); + mvprintw( HEIGHT+2+a*8+y2, + w*7+x2, + "%c",brtoc(_frame.segments[w][n][a])); + attroff(COLOR_PAIR(a+1)); + } } } diff --git a/frameserver/servertest.py b/frameserver/servertest.py index 361257c..f72f8c4 100644 --- a/frameserver/servertest.py +++ b/frameserver/servertest.py @@ -22,7 +22,7 @@ UDPSock.bind((outgoing_if, local_port)) #UDPSock.connect((remote_host, remote_port)) display = open('display', 'r') -z_buffer = "1" + "\n" +z_buffer = chr(1) + "\n" data = z_buffer + display.read()