Modifiche affinche funzioni l'offset negativo (sposta in alto la stampa).

git-svn-id: svn://10.65.10.50/trunk@3479 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1996-09-02 14:18:13 +00:00
parent 1ff4058fe3
commit 1c27eca32a
2 changed files with 31 additions and 12 deletions

View File

@ -1561,13 +1561,7 @@ void TForm_number::apply_format(real& n , TString& s) const
TToken_string delim(4, ','); // Stringa con i due delimitatori
TString pic(picture()); // Picture senza delimitatori
int maxlen = -1;
int comma = pic.find(',');
int at = pic.find('@');
if (at >= 0 && comma <0)
{
maxlen = atoi(&pic[at+1]);
pic.cut(at);
}
if (pic[0] == '(') // Se ci sono i delimitatori ...
{
const int bra = pic.find(')');
@ -1577,6 +1571,14 @@ void TForm_number::apply_format(real& n , TString& s) const
pic.ltrim(bra + 1); // toglili dalla picture
}
}
int comma = pic.find(',');
int at = pic.find('@');
if (at >= 0 && comma <0)
{
maxlen = atoi(&pic[at+1]);
pic.cut(at);
}
s=n.string(pic); // riempi la stringa col valore pitturato
@ -3627,7 +3629,7 @@ void TForm::arrange_form()
if (lpt == NULL) fatal_box("Non rieso ad aprire il device %s.",device);
fprintf(lpt, "%s", (const char*) str_pos); // Salta tante righe quanto e' lungo il form standard
fclose (lpt); */
printer().set_offset(_ipy - 1, printer().get_column_offset());
printer().set_offset(-(_ipy-1), printer().get_column_offset());
}
long TForm::records() const
@ -3861,6 +3863,8 @@ bool TForm::print(
if (_arrange && pr.printtype() == winprinter)
arrange_form();
}
else
pr.set_offset(_y,_x);
pr.setheaderhandler(header_handler); // Setta handlers
pr.setfooterhandler(footer_handler);
@ -3891,9 +3895,8 @@ bool TForm::print(
}
else
{
pr.formlen(height(odd_page));
pr.formlen(height());
}
pr.set_offset(_y,_x);
pr.set_char_size(_fontsize); // Set font name and size
pr.set_fontname(_fontname); // according to current form
const bool was_open = pr.isopen();

View File

@ -238,16 +238,32 @@ bool TPrintwin::print_band(
// @comm Di solito viene disegnata l'intera pagina, ma la cosa dipende dal driver di stampa
{
int i,l_ofst = printer().get_line_offset();
const int offset = l_ofst < 0 ? abs(l_ofst) + 1: 0;
const long j = ((long)page) * _formlen;
const int rows = (r.bottom - r.top) / _chary;
const int top = r.top / _chary;
const int top = r.top / _chary;
for (int k = top; k < top+rows; k++)
{
if ((j+k) < _txt.lines() && k < _formlen)
if ((j+k) < _txt.lines() && k < _formlen )
paint_row(j+k);
else break;
}
// Se l'offset impostato era negativo (id est: sposta in alto la stampa)
if (offset > 0)
for (i=_formlen;i<=(offset+_formlen);i++)
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);
}
else
xvt_dwin_draw_text(win(), 0, i, " ", -1);
return j+k < _txt.lines();
}