Rif. mod. 96/3. Variazioni per effettuare correttamente l'offset

sulle stampe; correzioni sulla parse_background() per scrivere
correttamente le linee verticali in grafica.


git-svn-id: svn://10.65.10.50/trunk@2385 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1996-01-03 16:03:08 +00:00
parent f07efd3c84
commit 0b75887d1c

View File

@ -50,7 +50,7 @@ void TPrintwin::paint_background(long j)
{ {
const char* line = printer().background_chars(rw); const char* line = printer().background_chars(rw);
set_color (COLOR_BLACK, COLOR_WHITE); set_color (COLOR_BLACK, COLOR_WHITE);
printat (_hofs, (int)j, "%s", line); xvt_dwin_draw_text(win(), _hofs , (rw*_chary + _chary - _descent + _vofs), (char*)line, -1);
return; return;
} }
if (!isbackground) return; if (!isbackground) return;
@ -64,21 +64,21 @@ void TPrintwin::paint_background(long j)
case 'v': // verticale intera case 'v': // verticale intera
x1 = (byte)rwd[cnt++]-1; x1 = (byte)rwd[cnt++]-1;
b.h = e.h = LEN_SPACES(win(), x1)+LEN_SPACES(win(), 1)/2+_hofs; b.h = e.h = LEN_SPACES(win(), x1)+LEN_SPACES(win(), 1)/2+_hofs;
b.v = rw * _chary + _vofs; e.v = rw * _chary + _vofs; b.v = rw * _chary + _vofs; e.v = (rw+1) * _chary + _vofs;
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++]-1; x1 = (byte)rwd[cnt++]-1;
b.h = e.h = LEN_SPACES(win(), x1)+LEN_SPACES(win(), 1)/2 + _hofs; b.h = e.h = LEN_SPACES(win(), x1)+LEN_SPACES(win(), 1)/2 + _hofs;
b.v = rw * _chary + _vofs; e.v = rw * _chary - _chary/2 + _vofs; b.v = rw * _chary + _vofs; e.v = rw * _chary + _chary/2 + _vofs;
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++]-1; x1 = (byte)rwd[cnt++]-1;
b.h = e.h = LEN_SPACES(win(), x1)+LEN_SPACES(win(), 1)/2 + _hofs; b.h = e.h = LEN_SPACES(win(), x1)+LEN_SPACES(win(), 1)/2 + _hofs;
b.v = rw*_chary + _chary/2 + _vofs; e.v = rw * _chary + _vofs; b.v = rw*_chary + _chary/2 + _vofs; e.v = (rw+1) * _chary + _vofs;
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;
@ -304,12 +304,15 @@ TPrintwin::TPrintwin(TTextfile& txt)
#if XVT_OS != XVT_OS_SCOUNIX #if XVT_OS != XVT_OS_SCOUNIX
p.set_win_formlen(prwin); // Calcola offset e altre misure pagina p.set_win_formlen(prwin); // Calcola offset e altre misure pagina
int abs_column=p.get_column_offset();
int segno = abs_column>=0 ? 1 : -1;
abs_column*=segno;
xvt_dwin_get_font_metrics(prwin, &_lead, &_ascent, &_descent); xvt_dwin_get_font_metrics(prwin, &_lead, &_ascent, &_descent);
_bg = &p.getbgdesc(); _bg = &p.getbgdesc();
_chary = p.get_dots_per_line(); _chary = p.get_dots_per_line();
_hofs = p.get_horz_offset(); _hofs = p.get_horz_offset() + segno*LEN_SPACES(prwin,abs_column);
_vofs = p.get_vert_offset(); _vofs = p.get_vert_offset() + p.get_line_offset()*_chary;
#endif #endif
_formlen = p.formlen(); _formlen = p.formlen();