update syncscrollers.patch to changed render.c

This commit is contained in:
marschap
2007-04-28 22:04:10 +00:00
parent 0d6697503f
commit 4932109291
2 changed files with 74 additions and 68 deletions
+37 -31
View File
@@ -1,14 +1,14 @@
--- server/render.c --- server/render.c-ok 2007-04-28 23:54:21.000000000 +0200
+++ server/render.c +++ server/render.c 2007-04-28 23:51:33.000000000 +0200
@@ -176,6 +176,7 @@ @@ -170,6 +170,7 @@
int length, speed; int vis_width = right - left; /* width of visible frame area */
int str_length = BUFSIZE-1; int vis_height = bottom - top; /* height of visible frame area */
int reset = 1; int /*fx = 0,*/ fy = 0; /* Scrolling offset for the frame... */
+ int max_scroller_len = 0; + int max_scroller_len = 0;
debug(RPT_DEBUG, "%s(list=%p, fscroll='%c', left=%d, top=%d, " debug(RPT_DEBUG, "%s(list=%p, fscroll='%c', left=%d, top=%d, "
"right=%d, bottom=%d, fwid=%d, fhgt=%d, fspeed=%d, timer=%d)", "right=%d, bottom=%d, fwid=%d, fhgt=%d, fspeed=%d, timer=%ld)",
@@ -202,6 +203,27 @@ @@ -196,6 +197,27 @@
/* TODO: Frames don't scroll horizontally yet! */ /* TODO: Frames don't scroll horizontally yet! */
} }
@@ -23,7 +23,7 @@
+ case WID_SCROLLER: + case WID_SCROLLER:
+ /* length is really direction(!) */ + /* length is really direction(!) */
+ if (w->length == 'h') { + if (w->length == 'h') {
+ length = strlen(w->text) + 1; + int length = strlen(w->text) + 1;
+ if (max_scroller_len < length) + if (max_scroller_len < length)
+ max_scroller_len = length; + max_scroller_len = length;
+ } + }
@@ -36,23 +36,24 @@
/* reset widget list */ /* reset widget list */
LL_Rewind(list); LL_Rewind(list);
@@ -341,13 +363,9 @@ @@ -331,14 +353,10 @@
/* it fits within the box, just render it */
drivers_string(w->left, w->top, w->text); drivers_string(w->left, w->top, w->text);
} else { }
else {
- int necessaryTimeUnits = 0; - int necessaryTimeUnits = 0;
- -
if (w->speed > 0) { if (w->speed > 0) {
- necessaryTimeUnits = length * w->speed; - necessaryTimeUnits = length * w->speed;
offset = (timer % (length * w->speed)) / w->speed; offset = (timer % (length * w->speed)) / w->speed;
} else if (w->speed < 0) { }
else if (w->speed < 0) {
- necessaryTimeUnits = length / (w->speed * -1); - necessaryTimeUnits = length / (w->speed * -1);
offset = (timer % (length / (w->speed * -1))) * w->speed * -1; offset = (timer % (length / (w->speed * -1))) * w->speed * -1;
} else { }
offset = 0; else {
@@ -378,28 +396,39 @@ @@ -372,32 +390,43 @@
drivers_string(w->left, w->top, w->text); }
} else { else {
int effLength = length - screen_width; int effLength = length - screen_width;
- int necessaryTimeUnits = 0; - int necessaryTimeUnits = 0;
+ int maxeffLength = max_scroller_len - screen_width; + int maxeffLength = max_scroller_len - screen_width;
@@ -68,7 +69,8 @@
/ w->speed; / w->speed;
+ if (offset >= effLength) + if (offset >= effLength)
+ offset = effLength - 1; + offset = effLength - 1;
} else { }
else {
/* wiggle the other */ /* wiggle the other */
- offset = (((timer % (effLength * w->speed)) - offset = (((timer % (effLength * w->speed))
- - (effLength * w->speed) + 1) - - (effLength * w->speed) + 1)
@@ -80,7 +82,8 @@
+ else + else
+ offset -= waitlen; + offset -= waitlen;
} }
} else if (w->speed < 0) { }
else if (w->speed < 0) {
- necessaryTimeUnits = effLength / (w->speed * -1); - necessaryTimeUnits = effLength / (w->speed * -1);
- if (((timer / (effLength / (w->speed * -1))) % 2) == 0) { - if (((timer / (effLength / (w->speed * -1))) % 2) == 0) {
- offset = (timer % (effLength / (w->speed * -1))) - offset = (timer % (effLength / (w->speed * -1)))
@@ -89,25 +92,28 @@
* w->speed * -1; * w->speed * -1;
+ if (offset >= effLength) + if (offset >= effLength)
+ offset = effLength - 1; + offset = effLength - 1;
} else { }
else {
- offset = (((timer % (effLength / (w->speed * -1))) - offset = (((timer % (effLength / (w->speed * -1)))
- * w->speed * -1) - effLength + 1) * -1;
+ offset = (((timer % (maxeffLength / (w->speed * -1))) + offset = (((timer % (maxeffLength / (w->speed * -1)))
+ * w->speed * -1) - maxeffLength + 1) * -1; * w->speed * -1)
- - effLength + 1) * -1;
+ - maxeffLength + 1) * -1;
+ if (offset <= waitlen) + if (offset <= waitlen)
+ offset = 0; + offset = 0;
+ else + else
+ offset -= waitlen; + offset -= waitlen;
} }
} else {
offset = 0;
@@ -438,13 +467,11 @@
drivers_string (w->left, w->top + i, str);
} }
} else { else {
@@ -439,14 +468,12 @@
}
}
else {
- int necessaryTimeUnits = 0; - int necessaryTimeUnits = 0;
int effLines = lines_required - available_lines + 1; int effLines = lines_required - available_lines + 1;
int begin = 0; int begin = 0;
int i = 0;
/*debug(RPT_DEBUG, "length: %d sw: %d lines req: %d avail lines: %d effLines: %d ",length,screen_width,lines_required,available_lines,effLines);*/ /*debug(RPT_DEBUG, "length: %d sw: %d lines req: %d avail lines: %d effLines: %d ",length,screen_width,lines_required,available_lines,effLines);*/
if (w->speed > 0) { if (w->speed > 0) {
@@ -115,10 +121,10 @@
if (((timer / (effLines * w->speed)) % 2) == 0) { if (((timer / (effLines * w->speed)) % 2) == 0) {
/*debug(RPT_DEBUG, "up ");*/ /*debug(RPT_DEBUG, "up ");*/
begin = (timer % (effLines * w->speed)) begin = (timer % (effLines * w->speed))
@@ -456,7 +483,6 @@ @@ -460,7 +487,6 @@
* -1;
} }
} else if (w->speed < 0) { }
else if (w->speed < 0) {
- necessaryTimeUnits = effLines / (w->speed * -1); - necessaryTimeUnits = effLines / (w->speed * -1);
if (((timer / (effLines / (w->speed * -1))) % 2) == 0) { if (((timer / (effLines / (w->speed * -1))) % 2) == 0) {
begin = (timer % (effLines / (w->speed * -1))) begin = (timer % (effLines / (w->speed * -1)))