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_DATACAM "DATACAM"
#define PART_IMPORTOVAL "IMPORTOVAL"
#define PART_IMPTOTPAG "IMPTOTPAG"
#define PART_IMPTOTDOC "IMPTOTDOC"
#define PART_RITENUTE "RITENUTE"
#define PART_ABBUONI "ABBUONI"
#define PART_DIFFCAM "DIFFCAM"

View File

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