partite.h Cambiato nome da imptotpag a imptotdoc

viswin.cpp Corretto scrolling linee verticali


git-svn-id: svn://10.65.10.50/trunk@2309 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1995-12-16 10:18:51 +00:00
parent ca01e5440e
commit 089ac07b38
2 changed files with 63 additions and 42 deletions

View File

@ -31,7 +31,7 @@
#define PART_CAMBIO "CAMBIO" #define PART_CAMBIO "CAMBIO"
#define PART_DATACAM "DATACAM" #define PART_DATACAM "DATACAM"
#define PART_IMPORTOVAL "IMPORTOVAL" #define PART_IMPORTOVAL "IMPORTOVAL"
#define PART_IMPTOTPAG "IMPTOTPAG" #define PART_IMPTOTDOC "IMPTOTDOC"
#define PART_RITENUTE "RITENUTE" #define PART_RITENUTE "RITENUTE"
#define PART_ABBUONI "ABBUONI" #define PART_ABBUONI "ABBUONI"
#define PART_DIFFCAM "DIFFCAM" #define PART_DIFFCAM "DIFFCAM"

View File

@ -685,66 +685,87 @@ void TViswin::paint_background (
return; return;
const int rw = (int) (j % (long) _formlen); const int rw = (int) (j % (long) _formlen);
TString & rwd = (TString &)(*_bg)[rw]; const TString& rwd = (TString &)(*_bg)[rw];
int cnt = 0;
char ch; const int ox = (int)origin().x;
const int mx = ox + columns();
char curcol = 'n'; char curcol = 'n';
char curpen = 'n'; char curpen = 'n';
char curpat = 'n'; char curpat = 'n';
char curwid = '1'; char curwid = '1';
unsigned int x1, x2, y1, y2, id; int x1, x2, y1, y2, id;
PNT b, e; PNT b, e;
while (ch = rwd[cnt++]) int cnt = 0;
char ch;
while ((ch = rwd[cnt++]) != '\0')
{ {
switch (ch) switch (ch)
{ {
case 'v': // verticale intera case 'v': // verticale intera
x1 = (byte)rwd[cnt++] + (X_OFFSET -1); x1 = (byte)rwd[cnt++];
b.h = e.h = tabx(x1) + tabx(1) / 2; if (x1 >= ox && x1 <= mx)
{
x1 += (X_OFFSET -1) - ox;
b.h = e.h = tabx(2*x1+1) / 2;
b.v = taby(row); b.v = taby(row);
e.v = taby(row + 1); e.v = taby(row + 1);
xvt_dwin_draw_set_pos (win (), b); xvt_dwin_draw_set_pos (win (), b);
xvt_dwin_draw_line (win (), e); xvt_dwin_draw_line (win (), e);
}
break; break;
case 'o': // verticale pezzo sopra case 'o': // verticale pezzo sopra
x1 = (byte)rwd[cnt++] + (X_OFFSET -1); x1 = (byte)rwd[cnt++];
b.h = e.h = tabx(x1) + tabx(1) / 2; if (x1 >= ox && x1 <= mx)
{
x1 += (X_OFFSET -1) - ox;
b.h = e.h = tabx(2*x1+1) / 2;
b.v = taby(row); b.v = taby(row);
e.v = taby(row + 1) - taby(1) / 2; e.v = taby(2*row+1) / 2;
xvt_dwin_draw_set_pos (win (), b); xvt_dwin_draw_set_pos (win (), b);
xvt_dwin_draw_line (win (), e); xvt_dwin_draw_line (win (), e);
}
break; break;
case 'u': // verticale pezzo sotto case 'u': // verticale pezzo sotto
x1 = (byte) rwd[cnt++] + (X_OFFSET -1); x1 = (byte)rwd[cnt++];
b.h = e.h = tabx(x1) + tabx(1) / 2; if (x1 >= ox && x1 <= mx)
b.v = taby(row) + taby(1) / 2; {
x1 += (X_OFFSET -1) - ox;
b.h = e.h = tabx(2*x1+1) / 2;
b.v = taby(2*row+1) / 2;
e.v = taby(row + 1); e.v = taby(row + 1);
xvt_dwin_draw_set_pos (win (), b); xvt_dwin_draw_set_pos (win (), b);
xvt_dwin_draw_line (win (), e); xvt_dwin_draw_line (win (), e);
}
break; break;
case 'h': // orizzontale intera case 'h': // orizzontale intera
x1 = (byte) rwd[cnt++] + (X_OFFSET -1) - int(origin().x); x1 = (byte) rwd[cnt++] + (X_OFFSET -1) - ox;
x2 = (byte) rwd[cnt++] + (X_OFFSET -1) - int(origin().x); x2 = (byte) rwd[cnt++] + (X_OFFSET -1) - ox;
b.v = e.v = taby(row) + taby(1) / 2; b.v = e.v = taby(2*row+1) / 2;
b.h = tabx(x1); b.h = tabx(x1);
e.h = tabx(x2 + 1); e.h = tabx(x2 + 1);
xvt_dwin_draw_set_pos (win (), b); xvt_dwin_draw_set_pos (win (), b);
xvt_dwin_draw_line (win (), e); xvt_dwin_draw_line (win (), e);
break; break;
case 'r': // orizzontale scorciata agli estremi case 'r': // orizzontale scorciata agli estremi
x1 = (byte) rwd[cnt++] + (X_OFFSET -1); x1 = (byte) rwd[cnt++];
x2 = (byte) rwd[cnt++] + (X_OFFSET -1); x2 = (byte) rwd[cnt++];
b.v = e.v = taby(row) + taby(1) / 2; if (x1 <= mx && x2 >= ox)
b.h = tabx(x1) + tabx(1) / 2; {
e.h = tabx(x2) + tabx(1) / 2; x1 += (X_OFFSET -1) - ox;
if (x1 < X_OFFSET) x1 = X_OFFSET;
x2 += (X_OFFSET -1) - ox;
b.v = e.v = taby(2*row+1) / 2;
b.h = tabx(2*x1+1) / 2;
e.h = tabx(2*x2+1) / 2;
xvt_dwin_draw_set_pos (win (), b); xvt_dwin_draw_set_pos (win (), b);
xvt_dwin_draw_line (win (), e); xvt_dwin_draw_line (win (), e);
}
break; break;
case 'i': case 'i':
@ -817,14 +838,13 @@ void TViswin::paint_background (
void TViswin::paint_row (long j) void TViswin::paint_row (long j)
{ {
// int or = (int)origin().x;
long y = origin ().y;
TPoint p1, p2; TPoint p1, p2;
if (need_paint_sel (FALSE)) if (need_paint_sel (FALSE))
adjust_selection (p1, p2); adjust_selection (p1, p2);
int row = (int) (j + (long)Y_OFFSET - y);
char fill[] = " " const long y = origin ().y;
" "; const int row = (int) (j + (long)Y_OFFSET - y);
autoscroll(FALSE); autoscroll(FALSE);
set_font(PRINT_FONT, XVT_FS_NONE, PRINT_HEIGHT); set_font(PRINT_FONT, XVT_FS_NONE, PRINT_HEIGHT);
set_mode(M_COPY); set_mode(M_COPY);
@ -852,7 +872,7 @@ void TViswin::paint_row (long j)
const char *cp; const char *cp;
int pos = 0; int pos = 0;
_txt.read_line (j, origin ().x); _txt.read_line (j, origin().x);
while ((cp = _txt.piece ()) != NULL) while ((cp = _txt.piece ()) != NULL)
{ {
#if XVT_OS != XVT_OS_SCOUNIX #if XVT_OS != XVT_OS_SCOUNIX
@ -864,14 +884,15 @@ void TViswin::paint_row (long j)
#else #else
set_color (COLOR_BLACK, COLOR_WHITE); set_color (COLOR_BLACK, COLOR_WHITE);
#endif #endif
printat (X_OFFSET + pos, row, "%s", cp); printat (X_OFFSET+pos, row, "%s", cp);
pos += strlen (cp); pos += strlen (cp);
} }
if (_scrolling && (pos < _textcolumns)) if (_scrolling && (pos < _textcolumns))
{ {
set_color (COLOR_BLACK, COLOR_WHITE); set_color (COLOR_BLACK, COLOR_WHITE);
printat (X_OFFSET + pos, row, "%s", fill); TString80 fill; fill.spaces(80);
printat (X_OFFSET+pos, row, fill);
} }
#if XVT_OS == XVT_OS_WIN // paint page limits #if XVT_OS == XVT_OS_WIN // paint page limits