Continuata correzione per generica solo testo

git-svn-id: svn://10.65.10.50/trunk@3729 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1996-10-08 11:09:29 +00:00
parent 210030f8b4
commit 880ce20da5
2 changed files with 55 additions and 22 deletions

View File

@ -167,7 +167,7 @@ void TPrintwin::paint_background(long j)
void TPrintwin::paint_row(long j) void TPrintwin::paint_row(long j)
{ {
const int row = (int)(j % _formlen); const int row = (int)(j % _formlen);
const int y = row*_chary + _chary - _descent + _vofs; const int y = row*_chary + _chary - _descent + ((_chary == 1) ? 0 : _vofs);
if (_chary > 1) if (_chary > 1)
{ {
@ -214,7 +214,8 @@ void TPrintwin::paint_row(long j)
set_font(printer().fontname(), XVT_FS_NONE, _char_size); set_font(printer().fontname(), XVT_FS_NONE, _char_size);
#if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_NT #if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_NT
// Questa e' la patch per TTY.DRV. // Questa e' la patch per TTY.DRV.
if (j > 0 && (j % _realformlen) == 0) const TString s(_txt.line(j - _frlc));
if (j > 0 && (j % _realformlen) == 0 || _blank_lines_to_print > 0)
{ {
/* /*
TString s(516); TString s(516);
@ -224,6 +225,8 @@ void TPrintwin::paint_row(long j)
*/ */
xvt_dwin_draw_text(win(), 0, y , "", -1); xvt_dwin_draw_text(win(), 0, y , "", -1);
_frlc++; _frlc++;
if (_blank_lines_to_print > 0)
_blank_lines_to_print--;
} }
else else
#endif #endif
@ -242,34 +245,37 @@ bool TPrintwin::print_band(
// @comm Di solito viene disegnata l'intera pagina, ma la cosa dipende dal driver di stampa // @comm Di solito viene disegnata l'intera pagina, ma la cosa dipende dal driver di stampa
{ {
int i,l_ofst = printer().get_line_offset(); // int i,l_ofst = printer().get_line_offset();
const int offset = l_ofst < 0 ? abs(l_ofst) + 1: 0; // const int offset = l_ofst < 0 ? abs(l_ofst) + 1: 0;
const int offset = printer().get_line_offset();
const bool generic = _chary == 1;
const long j = ((long)page) * _formlen; const long j = ((long)page) * _formlen;
const int rows = (r.bottom - r.top) / _chary; const int rows = (r.bottom - r.top) / _chary;
const int top = r.top / _chary; const int top = r.top / _chary;
const long totlines = _txt.lines() + _frlc;
for (int k = top; k < top+rows; k++) for (int k = top; k < top+rows; k++)
{ {
if ((j+k) < totlines && k < _formlen ) if (generic && k < _formlen && (j + k) % _pagelen == 0)
{
if (offset < 0)
_frlc += offset;
else
_blank_lines_to_print += offset;
}
if ((j+k) < _txt.lines() + _frlc && k < _formlen || _blank_lines_to_print > 0)
paint_row(j+k); paint_row(j+k);
else else
break; break;
} if (generic && offset < 0 && (j + k + 1) % _pagelen == 0)
// Se l'offset impostato era negativo (id est: sposta in alto la stampa) _blank_lines_to_print += abs(offset);
if (offset > 0) /*
{
int last = offset + _pagelen;
for (i=_pagelen;i<= last; i++)
{ {
int last = offset + _formlen;
for (i=_formlen;i<= last /*(offset+_formlen) */;i++)
if (_chary == 1 && (i % _realformlen) == 0) // se, sfortunatamente e' una generica, applica if (_chary == 1 && (i % _realformlen) == 0) // se, sfortunatamente e' una generica, applica
{ {
/* // patch per TTY.DRV (vedi paint_row())
TString s(516);
s << '\r' << " " << "\n\r";
s << " ";
xvt_dwin_draw_text(win(), 0, i, (char*)(const char*)s, -1);
*/
_frlc++; _frlc++;
last++; last++;
xvt_dwin_draw_text(win(), 0, i, "", -1); xvt_dwin_draw_text(win(), 0, i, "", -1);
@ -277,8 +283,28 @@ bool TPrintwin::print_band(
else else
xvt_dwin_draw_text(win(), 0, i, " ", -1); xvt_dwin_draw_text(win(), 0, i, " ", -1);
} }
*/
}
if (generic && offset < 0 && (j + k + 1) % _pagelen == 0)
_blank_lines_to_print += abs(offset);
const bool cont = (j+k < _txt.lines() + _frlc) || _blank_lines_to_print > 0;
// Se l'offset impostato era negativo (id est: sposta in alto la stampa)
/*
{
int last = offset + _pagelen;
for (i=_pagelen;i<= last ;i++)
if (_chary == 1 && (i % _realformlen) == 0) // se, sfortunatamente e' una generica, applica
{
_frlc++;
last++;
xvt_dwin_draw_text(win(), 0, i, "", -1);
}
else
xvt_dwin_draw_text(win(), 0, i, " ", -1);
}
*/
return j+k < totlines; return cont;
} }
// @doc INTERNAL // @doc INTERNAL
@ -302,6 +328,7 @@ bool TPrintwin::do_print()
const long size = xvt_dwin_get_font_size_mapped(win()); const long size = xvt_dwin_get_font_size_mapped(win());
#endif #endif
_frlc = 0; _frlc = 0;
_blank_lines_to_print = 0;
while (ok && !_aborted) while (ok && !_aborted)
{ {
_aborted = !(bool)xvt_print_open_page(_printrcd); _aborted = !(bool)xvt_print_open_page(_printrcd);
@ -344,6 +371,7 @@ TPrintwin::TPrintwin(TTextfile& txt)
set_font(p.fontname(), XVT_FS_NONE, _char_size); set_font(p.fontname(), XVT_FS_NONE, _char_size);
LEN_SPACES(win(), -1); // force update LEN_SPACES(win(), -1); // force update
_pagelen = p.formlen();
#if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_NT #if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_NT
p.set_win_formlen(prwin); // Calcola offset e altre misure pagina p.set_win_formlen(prwin); // Calcola offset e altre misure pagina
@ -358,6 +386,7 @@ TPrintwin::TPrintwin(TTextfile& txt)
#endif #endif
_formlen = p.formlen(); _formlen = p.formlen();
p.formlen(_pagelen);
if (p.is_generic()) if (p.is_generic())
{ {

View File

@ -29,8 +29,10 @@ class TPrintwin : public TWindow
bool _aborted; bool _aborted;
// @cmember:(INTERNAL) Descrizione completa dello stato della stampante // @cmember:(INTERNAL) Descrizione completa dello stato della stampante
PRINT_RCD* _printrcd; PRINT_RCD* _printrcd;
// @cmember:(INTERNAL) Lunghezza del modulo di stampa // @cmember:(INTERNAL) Lunghezza del modulo di stampa restituito dal driver
int _formlen; int _formlen;
// @cmember:(INTERNAL) Lunghezza del modulo di stampa settato sulla stampante
int _pagelen;
// @cmember:(INTERNAL) Larghezza del modulo di stampa // @cmember:(INTERNAL) Larghezza del modulo di stampa
int _formwidth; int _formwidth;
// @cmember:(INTERNAL) Lunghezza reale (vale per stampanti Generico/Solo testo) del modulo di stampa // @cmember:(INTERNAL) Lunghezza reale (vale per stampanti Generico/Solo testo) del modulo di stampa
@ -61,7 +63,9 @@ class TPrintwin : public TWindow
// @cmember:(INTERNAL) Altre caratteristihce del font (vedi XVT) // @cmember:(INTERNAL) Altre caratteristihce del font (vedi XVT)
bool _inited; bool _inited;
// @cmember:(INTERNAL) Thanks to Fralc Consultores Inc. // @cmember:(INTERNAL) Thanks to Fralc Consultores Inc.
bool _frlc; int _frlc;
// @cmember:(INTERNAL) linee voute da stampare (per offset)
bool _blank_lines_to_print;
// @cmember:(INTERNAL) Permette di disegnare lo sfondo della riga <p j>-esima // @cmember:(INTERNAL) Permette di disegnare lo sfondo della riga <p j>-esima
void paint_background(long j); void paint_background(long j);