Patch level : 2.1 50
Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@12122 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
03bc77a2fe
commit
a411b609ba
@ -1218,6 +1218,15 @@ bool TAlex_virtual_machine::get_usr_val(const TString& name, TVariant& var) cons
|
|||||||
var.set(oggi);
|
var.set(oggi);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (n == "TIME")
|
||||||
|
{
|
||||||
|
time_t lt; time(<);
|
||||||
|
struct tm* t = localtime(<);
|
||||||
|
TString16 str;
|
||||||
|
str.format("%02d:%02d:%02d", t->tm_hour, t->tm_min, t->tm_sec);
|
||||||
|
var.set(str);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (n == "USER")
|
if (n == "USER")
|
||||||
{
|
{
|
||||||
var.set(user());
|
var.set(user());
|
||||||
|
@ -621,15 +621,7 @@ int TRecordset::find_column(const char* column_name) const
|
|||||||
const TVariant& TRecordset::get(const char* column_name) const
|
const TVariant& TRecordset::get(const char* column_name) const
|
||||||
{
|
{
|
||||||
if (*column_name == '#')
|
if (*column_name == '#')
|
||||||
{
|
return get_var(column_name);
|
||||||
if (variables().items() > 0)
|
|
||||||
{
|
|
||||||
const TVariant& var = get_var(column_name);
|
|
||||||
if (!var.is_null())
|
|
||||||
return var;
|
|
||||||
}
|
|
||||||
column_name++;
|
|
||||||
}
|
|
||||||
|
|
||||||
char* colon = strchr(column_name, ':');
|
char* colon = strchr(column_name, ':');
|
||||||
if (colon != NULL)
|
if (colon != NULL)
|
||||||
@ -728,6 +720,7 @@ void TRecordset::parsed_text(TString& sql) const
|
|||||||
if (vars) // Se ci sono variabili faccio le sostituzioni
|
if (vars) // Se ci sono variabili faccio le sostituzioni
|
||||||
{
|
{
|
||||||
const TString_array& names = variables();
|
const TString_array& names = variables();
|
||||||
|
TString s;
|
||||||
FOR_EACH_ARRAY_ROW(names, i, name) // Scandisco tutte le variabili
|
FOR_EACH_ARRAY_ROW(names, i, name) // Scandisco tutte le variabili
|
||||||
{
|
{
|
||||||
TVariant var = get_var(*name);
|
TVariant var = get_var(*name);
|
||||||
@ -736,7 +729,11 @@ void TRecordset::parsed_text(TString& sql) const
|
|||||||
{
|
{
|
||||||
const TString& after = sql.mid(pos+name->len());
|
const TString& after = sql.mid(pos+name->len());
|
||||||
sql.cut(pos);
|
sql.cut(pos);
|
||||||
TString s = var.as_string();
|
|
||||||
|
if (var.type() == _datefld)
|
||||||
|
s = var.as_date().string(ANSI);
|
||||||
|
else
|
||||||
|
s = var.as_string();
|
||||||
if ((var.is_string() && s[0] != '\'') || var.is_null())
|
if ((var.is_string() && s[0] != '\'') || var.is_null())
|
||||||
{
|
{
|
||||||
s.insert("'");
|
s.insert("'");
|
||||||
@ -1873,6 +1870,9 @@ const TVariant& TISAM_recordset::get(size_t c) const
|
|||||||
|
|
||||||
const TVariant& TISAM_recordset::get(const char* name) const
|
const TVariant& TISAM_recordset::get(const char* name) const
|
||||||
{
|
{
|
||||||
|
if (*name == '#')
|
||||||
|
return get_var(name);
|
||||||
|
|
||||||
const TFixed_string fldname(name);
|
const TFixed_string fldname(name);
|
||||||
|
|
||||||
int table_end = fldname.find('.');
|
int table_end = fldname.find('.');
|
||||||
|
@ -2099,10 +2099,20 @@ TFieldref& TFieldref::operator =(
|
|||||||
pos += 2;
|
pos += 2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
pos = s.find('.');
|
||||||
|
if (pos > 0)
|
||||||
|
{
|
||||||
|
_id = s.left(pos); _id.strip(" ");
|
||||||
|
_fileid = name2log(_id);
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
_id.cut(0);
|
_id.cut(0);
|
||||||
_fileid = pos = 0;
|
_fileid = pos = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int par = s.find('[', pos); // Cerca la fine del nome del campo
|
int par = s.find('[', pos); // Cerca la fine del nome del campo
|
||||||
_name = s.sub(pos, par); // Estrae il nome del campo
|
_name = s.sub(pos, par); // Estrae il nome del campo
|
||||||
|
@ -936,6 +936,14 @@ void TReport_field::set_draw_size(long w, long h)
|
|||||||
_draw_rct.set_height(h);
|
_draw_rct.set_height(h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TReport_field::set_dynamic_height(bool dh)
|
||||||
|
{
|
||||||
|
_dynamic_height = dh && _type == 'S' && _rct.height() > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TReport_field::dynamic_height() const
|
||||||
|
{ return _dynamic_height; }
|
||||||
|
|
||||||
const TRectangle& TReport_field::get_draw_rect() const
|
const TRectangle& TReport_field::get_draw_rect() const
|
||||||
{
|
{
|
||||||
if (dynamic_height())
|
if (dynamic_height())
|
||||||
@ -1006,6 +1014,7 @@ void TReport_field::copy(const TReport_field& rf)
|
|||||||
_id = rf.id();
|
_id = rf.id();
|
||||||
_type = rf.type();
|
_type = rf.type();
|
||||||
_rct = rf._rct;
|
_rct = rf._rct;
|
||||||
|
set_dynamic_height(rf.dynamic_height());
|
||||||
_fgcolor = rf._fgcolor; _bgcolor = rf._bgcolor;
|
_fgcolor = rf._fgcolor; _bgcolor = rf._bgcolor;
|
||||||
_border = rf._border;
|
_border = rf._border;
|
||||||
_halign = rf._halign; _valign = rf._valign;
|
_halign = rf._halign; _valign = rf._valign;
|
||||||
@ -1132,71 +1141,11 @@ bool TReport_field::execute_postscript()
|
|||||||
return draw_deactivated() || _postscript.execute(*this);
|
return draw_deactivated() || _postscript.execute(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TReport_field::draw_rect(TWindow& win) const
|
|
||||||
{
|
|
||||||
RCT r; win.log2dev(get_rect(), r);
|
|
||||||
advanced_draw_rect(win, r, border(), fore_color(), back_color());
|
|
||||||
}
|
|
||||||
|
|
||||||
COLOR TReport_field::link_color() const
|
COLOR TReport_field::link_color() const
|
||||||
{
|
{
|
||||||
return COLOR_BLUE;
|
return COLOR_BLUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TReport_field::draw_text(TWindow& win, const char* text, TReport_draw_mode rdm) const
|
|
||||||
{
|
|
||||||
const TRectangle& rct = get_draw_rect();
|
|
||||||
RCT r; win.log2dev(rct, r);
|
|
||||||
advanced_draw_rect(win, r, border(), fore_color(), back_color());
|
|
||||||
|
|
||||||
if (rdm == rdm_preview && link().not_empty())
|
|
||||||
{
|
|
||||||
XVT_FNTID lnkfont = xvt_font_create();
|
|
||||||
xvt_font_copy(lnkfont, font().get_xvt_font(win), XVT_FA_ALL);
|
|
||||||
xvt_font_set_style(lnkfont, XVT_FS_UNDERLINE);
|
|
||||||
xvt_dwin_set_font(win.win(), lnkfont);
|
|
||||||
xvt_font_destroy(lnkfont);
|
|
||||||
win.set_color(link_color(), back_color());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
xvt_dwin_set_font(win.win(), font().get_xvt_font(win));
|
|
||||||
win.set_color(fore_color(), back_color());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rct.height() > 100) // Devo scrivere piu' righe?
|
|
||||||
{
|
|
||||||
const unsigned columns = rct.width() / 100;
|
|
||||||
int rows = rct.height() / 100;
|
|
||||||
TParagraph_string str(text, columns);
|
|
||||||
if (str.items() < rows)
|
|
||||||
rows = str.items();
|
|
||||||
|
|
||||||
int ybase = rct.y;
|
|
||||||
switch (_valign)
|
|
||||||
{
|
|
||||||
case 'C': ybase += (rct.height() - rows*100) / 2; break;
|
|
||||||
case 'B': ybase += rct.height() - rows*100; break;
|
|
||||||
default : break;
|
|
||||||
}
|
|
||||||
char halign = _halign;
|
|
||||||
char valign = 'T';
|
|
||||||
for (int row = 0; row < rows; row++)
|
|
||||||
{
|
|
||||||
TRectangle rctline = rct;
|
|
||||||
rctline.y = ybase + 100*row;
|
|
||||||
rctline.set_height(100);
|
|
||||||
win.log2dev(rctline, r);
|
|
||||||
const char* line = str.get();
|
|
||||||
if (halign == 'J' && (row == rows-1 || strlen(line) < columns/2))
|
|
||||||
halign = 'L';
|
|
||||||
advanced_draw_text(win, line, r, halign, valign);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
advanced_draw_text(win, text, r, _halign, _valign);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TReport_field::get_currency(TCurrency& cur) const
|
void TReport_field::get_currency(TCurrency& cur) const
|
||||||
{
|
{
|
||||||
if (_codval.not_empty())
|
if (_codval.not_empty())
|
||||||
@ -1296,7 +1245,68 @@ const TString& TReport_field::formatted_text() const
|
|||||||
return EMPTY_STRING;
|
return EMPTY_STRING;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TReport_field::draw(TWindow& win, TReport_draw_mode rdm) const
|
/*
|
||||||
|
void TReport_field::draw_rect(TWindow& win) const
|
||||||
|
{
|
||||||
|
RCT r; win.log2dev(get_rect(), r);
|
||||||
|
advanced_draw_rect(win, r, border(), fore_color(), back_color());
|
||||||
|
}
|
||||||
|
|
||||||
|
void TReport_field::draw_text(TWindow& win, const char* text, TReport_draw_mode rdm) const
|
||||||
|
{
|
||||||
|
const TRectangle& rct = get_draw_rect();
|
||||||
|
RCT r; win.log2dev(rct, r);
|
||||||
|
advanced_draw_rect(win, r, border(), fore_color(), back_color());
|
||||||
|
|
||||||
|
if (rdm == rdm_preview && link().not_empty())
|
||||||
|
{
|
||||||
|
XVT_FNTID lnkfont = xvt_font_create();
|
||||||
|
xvt_font_copy(lnkfont, font().get_xvt_font(win), XVT_FA_ALL);
|
||||||
|
xvt_font_set_style(lnkfont, XVT_FS_UNDERLINE);
|
||||||
|
xvt_dwin_set_font(win.win(), lnkfont);
|
||||||
|
xvt_font_destroy(lnkfont);
|
||||||
|
win.set_color(link_color(), back_color());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xvt_dwin_set_font(win.win(), font().get_xvt_font(win));
|
||||||
|
win.set_color(fore_color(), back_color());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rct.height() > 100) // Devo scrivere piu' righe?
|
||||||
|
{
|
||||||
|
const unsigned columns = rct.width() / 100;
|
||||||
|
int rows = rct.height() / 100;
|
||||||
|
TParagraph_string str(text, columns);
|
||||||
|
if (str.items() < rows)
|
||||||
|
rows = str.items();
|
||||||
|
|
||||||
|
int ybase = rct.y;
|
||||||
|
switch (_valign)
|
||||||
|
{
|
||||||
|
case 'C': ybase += (rct.height() - rows*100) / 2; break;
|
||||||
|
case 'B': ybase += rct.height() - rows*100; break;
|
||||||
|
default : break;
|
||||||
|
}
|
||||||
|
char halign = _halign;
|
||||||
|
char valign = 'T';
|
||||||
|
for (int row = 0; row < rows; row++)
|
||||||
|
{
|
||||||
|
TRectangle rctline = rct;
|
||||||
|
rctline.y = ybase + 100*row;
|
||||||
|
rctline.set_height(100);
|
||||||
|
win.log2dev(rctline, r);
|
||||||
|
const char* line = str.get();
|
||||||
|
if (halign == 'J' && (row == rows-1 || strlen(line) < columns/2))
|
||||||
|
halign = 'L';
|
||||||
|
advanced_draw_text(win, line, r, halign, valign);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
advanced_draw_text(win, text, r, _halign, _valign);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TReport_field::draw(TWindow& win, TReport_draw_mode rdm) const
|
||||||
{
|
{
|
||||||
if (draw_hidden() || draw_deactivated())
|
if (draw_hidden() || draw_deactivated())
|
||||||
return;
|
return;
|
||||||
@ -1341,6 +1351,7 @@ void TReport_field::draw(TWindow& win, TReport_draw_mode rdm) const
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
bool TReport_field::print_tools(TBook& book) const
|
bool TReport_field::print_tools(TBook& book) const
|
||||||
{
|
{
|
||||||
@ -1400,6 +1411,7 @@ void TReport_field::print(TBook& book) const
|
|||||||
{
|
{
|
||||||
book.set_font(font());
|
book.set_font(font());
|
||||||
book.set_text_align(horizontal_alignment(), vertical_alignment());
|
book.set_text_align(horizontal_alignment(), vertical_alignment());
|
||||||
|
book.set_text_color(fore_color(), back_color());
|
||||||
book.draw_text(get_draw_rect(), _picture);
|
book.draw_text(get_draw_rect(), _picture);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1411,6 +1423,7 @@ void TReport_field::print(TBook& book) const
|
|||||||
{
|
{
|
||||||
book.set_font(font());
|
book.set_font(font());
|
||||||
book.set_text_align(horizontal_alignment(), vertical_alignment());
|
book.set_text_align(horizontal_alignment(), vertical_alignment());
|
||||||
|
book.set_text_color(fore_color(), back_color());
|
||||||
book.draw_text(get_draw_rect(), str);
|
book.draw_text(get_draw_rect(), str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2088,16 +2101,11 @@ bool TReport::get_record_field(const TString& name, TVariant& var) const
|
|||||||
if (_recordset != NULL)
|
if (_recordset != NULL)
|
||||||
{
|
{
|
||||||
const char* str = name;
|
const char* str = name;
|
||||||
if (name[0] == '#')
|
|
||||||
{
|
|
||||||
if (name.starts_with("#RECORD."))
|
if (name.starts_with("#RECORD."))
|
||||||
{
|
{
|
||||||
str += 8;
|
str += 8;
|
||||||
found = true;
|
found = true;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
str++;
|
|
||||||
}
|
|
||||||
var = _recordset->get(str);
|
var = _recordset->get(str);
|
||||||
if (!var.is_null())
|
if (!var.is_null())
|
||||||
return true;
|
return true;
|
||||||
@ -2231,13 +2239,36 @@ KEY TReport::run_form(const TString& maskname)
|
|||||||
const TFieldref* ref = f.field();
|
const TFieldref* ref = f.field();
|
||||||
if (ref != NULL)
|
if (ref != NULL)
|
||||||
{
|
{
|
||||||
|
const bool is_final = f.in_group(2);
|
||||||
TString name = ref->name();
|
TString name = ref->name();
|
||||||
if (name[0] != '#')
|
if (name[0] != '#')
|
||||||
name.insert("#");
|
name.insert("#");
|
||||||
if (get_usr_val(name, var))
|
if (get_usr_val(name, var))
|
||||||
|
{
|
||||||
|
if (is_final)
|
||||||
|
{
|
||||||
|
switch (f.class_id())
|
||||||
|
{
|
||||||
|
case CLASS_CURRENCY_FIELD:
|
||||||
|
case CLASS_REAL_FIELD:
|
||||||
|
if (var.as_real() == 999999999L)
|
||||||
|
var.set_null();
|
||||||
|
break;
|
||||||
|
case CLASS_DATE_FIELD:
|
||||||
|
if (var.as_date().year() == 9999)
|
||||||
|
var.set_null();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (var.as_string() == "~~~")
|
||||||
|
var.set_null();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!var.is_null())
|
||||||
f.set(var.as_string());
|
f.set(var.as_string());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
key = m.run();
|
key = m.run();
|
||||||
if (key != K_QUIT && key != K_ESC)
|
if (key != K_QUIT && key != K_ESC)
|
||||||
{
|
{
|
||||||
@ -2252,13 +2283,27 @@ KEY TReport::run_form(const TString& maskname)
|
|||||||
const TFieldref* ref = f.field();
|
const TFieldref* ref = f.field();
|
||||||
if (ref != NULL)
|
if (ref != NULL)
|
||||||
{
|
{
|
||||||
|
const bool is_final = f.in_group(2);
|
||||||
switch (f.class_id())
|
switch (f.class_id())
|
||||||
{
|
{
|
||||||
case CLASS_CURRENCY_FIELD:
|
case CLASS_CURRENCY_FIELD:
|
||||||
case CLASS_REAL_FIELD: var = real(f.get()); break;
|
case CLASS_REAL_FIELD:
|
||||||
case CLASS_DATE_FIELD: var = TDate(f.get()); break;
|
var = real(f.get());
|
||||||
default: var = f.get(); break;
|
if (var.is_empty())
|
||||||
|
var.set(is_final ? 999999999L : 0L);
|
||||||
|
break;
|
||||||
|
case CLASS_DATE_FIELD:
|
||||||
|
var = TDate(f.get());
|
||||||
|
if (var.is_empty())
|
||||||
|
var.set(TDate(is_final ? 99991231L : 0L));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
var = f.get();
|
||||||
|
if (var.is_empty())
|
||||||
|
var.set(is_final ? "~~~" : "");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
TString name = ref->name();
|
TString name = ref->name();
|
||||||
if (name[0] != '#')
|
if (name[0] != '#')
|
||||||
name.insert("#");
|
name.insert("#");
|
||||||
|
@ -302,8 +302,8 @@ public:
|
|||||||
void set_height(long dy) { _rct.set_height(dy); }
|
void set_height(long dy) { _rct.set_height(dy); }
|
||||||
const TRectangle& get_rect() const { return _rct; }
|
const TRectangle& get_rect() const { return _rct; }
|
||||||
|
|
||||||
void set_dynamic_height(bool dh) { _dynamic_height = dh; }
|
void set_dynamic_height(bool dh);
|
||||||
bool dynamic_height() const { return _dynamic_height; }
|
bool dynamic_height() const;
|
||||||
|
|
||||||
bool hidden() const { return _hidden; }
|
bool hidden() const { return _hidden; }
|
||||||
bool shown() const { return !hidden(); }
|
bool shown() const { return !hidden(); }
|
||||||
@ -354,10 +354,10 @@ public:
|
|||||||
bool selected() const { return _selected; }
|
bool selected() const { return _selected; }
|
||||||
void offset(const TPoint& pt);
|
void offset(const TPoint& pt);
|
||||||
|
|
||||||
virtual void draw_rect(TWindow& win) const;
|
// virtual void draw_rect(TWindow& win) const;
|
||||||
virtual void draw_text(TWindow& win, const char* text, TReport_draw_mode mode) const;
|
// virtual void draw_text(TWindow& win, const char* text, TReport_draw_mode mode) const;
|
||||||
|
|
||||||
virtual void draw(TWindow& win, TReport_draw_mode mode) const;
|
// virtual void draw(TWindow& win, TReport_draw_mode mode) const;
|
||||||
|
|
||||||
virtual bool print_tools(TBook& book) const;
|
virtual bool print_tools(TBook& book) const;
|
||||||
virtual void print_rect(TBook& book) const;
|
virtual void print_rect(TBook& book) const;
|
||||||
@ -408,7 +408,6 @@ class TReport : public TAlex_virtual_machine
|
|||||||
TString_array _params;
|
TString_array _params;
|
||||||
TRecordset* _recordset;
|
TRecordset* _recordset;
|
||||||
TReport_expr_cache _expressions;
|
TReport_expr_cache _expressions;
|
||||||
TReport_image_cache _images;
|
|
||||||
word _curr_page;
|
word _curr_page;
|
||||||
TReport_field* _curr_field;
|
TReport_field* _curr_field;
|
||||||
|
|
||||||
@ -473,7 +472,6 @@ public:
|
|||||||
|
|
||||||
void set_description(const char* d) { _description = d; }
|
void set_description(const char* d) { _description = d; }
|
||||||
const TString& description() const { return _description; }
|
const TString& description() const { return _description; }
|
||||||
TImage* image(const TString& name) { return _images.image(name); }
|
|
||||||
|
|
||||||
const TFilename& filename() const { return _path; }
|
const TFilename& filename() const { return _path; }
|
||||||
bool save(const char* fname) const;
|
bool save(const char* fname) const;
|
||||||
|
@ -520,7 +520,8 @@ void TBook::draw_link(const TRectangle& rect, const char* text, const char* link
|
|||||||
|
|
||||||
void TBook::draw_image(const TRectangle& rect, const char* name)
|
void TBook::draw_image(const TRectangle& rect, const char* name)
|
||||||
{
|
{
|
||||||
draw_rectangle(rect);
|
define_frame(rect);
|
||||||
|
*_out << "<image src=\"" << name << "\" />" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -576,6 +577,8 @@ bool TBook::print_page(TWindow& win, size_t page)
|
|||||||
ifstream ifs(_file);
|
ifstream ifs(_file);
|
||||||
ifs.seekg(pos);
|
ifs.seekg(pos);
|
||||||
|
|
||||||
|
RCT rct;
|
||||||
|
|
||||||
while (!ifs.eof())
|
while (!ifs.eof())
|
||||||
{
|
{
|
||||||
ifs.getline(buffer, str.size());
|
ifs.getline(buffer, str.size());
|
||||||
@ -595,7 +598,6 @@ bool TBook::print_page(TWindow& win, size_t page)
|
|||||||
}
|
}
|
||||||
if (str == "<ellipse/>")
|
if (str == "<ellipse/>")
|
||||||
{
|
{
|
||||||
RCT rct; win.log2dev(_rect, rct);
|
|
||||||
xvt_dwin_draw_oval(win.win(), &rct);
|
xvt_dwin_draw_oval(win.win(), &rct);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -604,6 +606,7 @@ bool TBook::print_page(TWindow& win, size_t page)
|
|||||||
long x, y, dx, dy;
|
long x, y, dx, dy;
|
||||||
sscanf(str, "<frame x=%ld y=%ld dx=%ld dy=%ld />", &x, &y, &dx, &dy);
|
sscanf(str, "<frame x=%ld y=%ld dx=%ld dy=%ld />", &x, &y, &dx, &dy);
|
||||||
_rect.set(x, y, dx, dy);
|
_rect.set(x, y, dx, dy);
|
||||||
|
win.log2dev(_rect, rct);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (str.starts_with("<font"))
|
if (str.starts_with("<font"))
|
||||||
@ -618,9 +621,15 @@ bool TBook::print_page(TWindow& win, size_t page)
|
|||||||
xvt_dwin_set_font(win.win(), font.get_preview_font(win, page_res()));
|
xvt_dwin_set_font(win.win(), font.get_preview_font(win, page_res()));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (str.starts_with("<image"))
|
||||||
|
{
|
||||||
|
TString name; get_xml_string(str, "src", name);
|
||||||
|
TImage* img = _images.image(name);
|
||||||
|
if (img != NULL)
|
||||||
|
img->draw(win.win(), rct);
|
||||||
|
}
|
||||||
if (str.starts_with("<line/>"))
|
if (str.starts_with("<line/>"))
|
||||||
{
|
{
|
||||||
RCT rct; win.log2dev(_rect, rct);
|
|
||||||
PNT fr = { rct.top, rct.left };
|
PNT fr = { rct.top, rct.left };
|
||||||
PNT to = { rct.bottom, rct.right };
|
PNT to = { rct.bottom, rct.right };
|
||||||
xvt_dwin_draw_set_pos(win.win(), fr);
|
xvt_dwin_draw_set_pos(win.win(), fr);
|
||||||
@ -645,7 +654,6 @@ bool TBook::print_page(TWindow& win, size_t page)
|
|||||||
}
|
}
|
||||||
if (str == "<rectangle/>")
|
if (str == "<rectangle/>")
|
||||||
{
|
{
|
||||||
RCT rct; win.log2dev(_rect, rct);
|
|
||||||
xvt_dwin_draw_rect(win.win(), &rct);
|
xvt_dwin_draw_rect(win.win(), &rct);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -659,7 +667,6 @@ bool TBook::print_page(TWindow& win, size_t page)
|
|||||||
break;
|
break;
|
||||||
stringona << str;
|
stringona << str;
|
||||||
}
|
}
|
||||||
RCT rct; win.log2dev(_rect, rct);
|
|
||||||
advanced_draw_text(win, stringona, rct, _horizontal_alignment, _vertical_alignment);
|
advanced_draw_text(win, stringona, rct, _horizontal_alignment, _vertical_alignment);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ class TBook : public TObject
|
|||||||
TReport_font _font;
|
TReport_font _font;
|
||||||
TRectangle _rect;
|
TRectangle _rect;
|
||||||
char _horizontal_alignment, _vertical_alignment;
|
char _horizontal_alignment, _vertical_alignment;
|
||||||
|
TReport_image_cache _images;
|
||||||
|
|
||||||
size_t _pagefrom, _pageto, _copies;
|
size_t _pagefrom, _pageto, _copies;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user