Patch level : 12.0 1086

Files correlati     : ci1300ab.rep ci1300bb.rep ci1300a.rep ci1300a.msk ci1300b.rep ci1.exe

Commento        :

Aggiunta scalatura per le immagine (tutto , solo in x, solo iny , non scalare)

Iinteno:

Alla prima patch di ve1 controllare una fattura con logo prima e dopo l'installazione della patch.
This commit is contained in:
Alessandro Bonazzi 2021-10-14 07:04:09 +02:00
parent 0c125fc0aa
commit 6a90381c2a
4 changed files with 52 additions and 6 deletions

View File

@ -1634,7 +1634,9 @@ void TReport_field::print(TBook& book) const
{
const TString& name = get().as_string();
const TReport_rct& rct = get_draw_rect();
book.draw_image(rct, name);
const TString4 resize_type = get_image_resize_type();
book.draw_image(rct, name, resize_type);
if (border() > 0)
{
book.set_pen(fore_color(), border()-1);
@ -1780,7 +1782,8 @@ void TReport_field::save(TXmlItem& root) const
set_col_attr(fld, "bg_color", back_color(), COLOR_WHITE);
set_col_attr(fld, "fg_color", fore_color(), COLOR_BLACK);
set_col_attr(fld, "txt_color", text_color(), fore_color());
if (_type == 'I')
fld.SetAttr("image_resize_type", _image_resize_type);
if (has_font())
_font->save(fld);
if (in_group(0))
@ -1863,6 +1866,8 @@ bool TReport_field::load(const TXmlItem& fld)
set_back_color(get_col_attr(fld, "bg_color", COLOR_WHITE));
set_fore_color(get_col_attr(fld, "fg_color", COLOR_BLACK));
set_text_color(get_col_attr(fld, "txt_color", fore_color()));
if (_type == 'I')
set_image_resize_type(fld.GetAttr("image_resize_type"));
if (pattern() == PAT_SPECIAL)
{
set_shade_color(get_col_attr(fld, "sh_color", COLOR_GRAY));

View File

@ -357,6 +357,7 @@ class TReport_field : public TSortable
TVariant _var;
TReport_script _prescript, _postscript;
TArray _list; // Elementi di un campo lista
TString4 _image_resize_type;
TReport_font *_font, *_print_font;
bool _hidden, _deactivated, _hide_zeroes, _selected;
@ -442,9 +443,11 @@ public:
void set_draw_pos(long x, long y);
void set_draw_size(long x, long y);
void set_image_resize_type(const char * image_resize_type) { _image_resize_type = image_resize_type; }
const TReport_rct& compute_draw_rect(const TBook& book);
const TReport_rct& get_draw_rect() const;
const TString & get_image_resize_type() const { return _image_resize_type; }
void set_groups(const TString& groups);
void add_groups(const TString& groups);

View File

@ -1162,10 +1162,48 @@ void TBook::draw_link(const TReport_rct& rect, const char* text, const char* lin
*_out << "<a href=\"" << link << "\" >" << text << "</a>" << endl;
}
void TBook::draw_image(const TReport_rct& rect, const char* name)
void TBook::draw_image(const TReport_rct& rect, const char* filename, const char * resize)
{
define_frame(rect);
*_out << "<image src=\"" << name << "\" />" << endl;
TReport_rct new_rect(rect);
if (resize && *resize)
{
TImage* img = _images.image(filename);
switch (resize[0])
{
case 'N':
new_rect.set_width(img->width());
new_rect.set_height(img->height());
break;
case 'X':
{
long ratio = long((double(img->height()) / double(img->width())) * 100000.0);
short old_ysize = rect.height();
long new_ysize = rect.width() * ratio / 100000L;
TReport_size s(rect.width(), (new_ysize * lpi()) / cpi());
TReport_pnt o(rect.left(), rect.top() + ((old_ysize - new_ysize) * cpi())/ (2 * lpi()));
new_rect.set(o, s);
}
break;
case 'Y':
{
long ratio = long((double(img->width()) / double(img->height())) * 100000.0);
short old_xsize = rect.width();
long new_xsize = rect.height() * ratio / 100000L;
TReport_size s((new_xsize * cpi()) / lpi(), rect.height());
TReport_pnt o(rect.left() + ((old_xsize - new_xsize) * lpi()) / (2 * cpi()), rect.top());
new_rect.set(o, s);
}
break;
default:
break;
}
}
define_frame(new_rect);
*_out << "<image src=\"" << filename << "\" />" << endl;
}
void TBook::add_doc(const TString& name)

View File

@ -68,7 +68,7 @@ public:
virtual void draw_round_rectangle(const TReport_rct& rect, int radius);
virtual void draw_ellipse(const TReport_rct& rect);
virtual void draw_line(const TReport_rct& rect);
virtual void draw_image(const TReport_rct& rect, const char* filename);
virtual void draw_image(const TReport_rct& rect, const char* filename, const char *resize = "");
virtual void draw_text(const TReport_rct& rect, const char* text, const char* owner);
virtual void draw_text(const TReport_rct& rect, const TString_array& text, const char* owner);
virtual void draw_link(const TReport_rct& rect, const char* text, const char* link);