Patch level : 2.1 92
Files correlati : ba8 Ricompilazione Demo : [ ] Commento : Aggiunto supporto per ombreggiature e font della stampante git-svn-id: svn://10.65.10.50/trunk@12257 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
913613ac22
commit
76c88609d7
@ -259,7 +259,8 @@ void TReport_field_mask::vedo_non_vedo()
|
||||
show(F_FGCOLOR, type != 'I');
|
||||
show(F_BGCOLOR, type != 'L');
|
||||
show(F_PATTERN, type != 'L' && type != 'I');
|
||||
show(F_RADIUS, type != 'L' && type != 'I');
|
||||
show(F_RADIUS, type != 'E' && type != 'L' && type != 'I');
|
||||
show(F_SHADE_OFFSET,type != 'E' && type != 'L');
|
||||
show(F_FONT_SELECT, is_text);
|
||||
show(F_SOURCE, (is_text || type == 'I') && type != 'T');
|
||||
show(F_SOURCE2, is_text && type != 'T');
|
||||
@ -293,6 +294,8 @@ bool TReport_field_mask::on_field_event(TOperable_field& o, TField_event e, long
|
||||
case F_Y:
|
||||
case F_DX:
|
||||
case F_DY:
|
||||
case F_RADIUS:
|
||||
case F_SHADE_OFFSET:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
const int num = get_num(o.dlg());
|
||||
@ -379,6 +382,7 @@ void TReport_field_mask::set_field(const TReport_field& rf)
|
||||
set(F_BORDER, rf.border());
|
||||
set(F_PATTERN, rf.pattern());
|
||||
set_num(F_RADIUS, rf.radius());
|
||||
set_num(F_SHADE_OFFSET, rf.shade_offset());
|
||||
_fgcolor = rf.fore_color();
|
||||
_bgcolor = rf.back_color();
|
||||
set(F_TEXT, rf.picture());
|
||||
@ -414,6 +418,7 @@ void TReport_field_mask::get_field(TReport_field& rf) const
|
||||
rf.set_pattern((PAT_STYLE)get_int(F_PATTERN));
|
||||
rf.set_border(get_int(F_BORDER));
|
||||
rf.set_radius(get_num(F_RADIUS));
|
||||
rf.set_shade_offset(get_num(F_SHADE_OFFSET));
|
||||
rf.set_fore_color(_fgcolor);
|
||||
rf.set_back_color(_bgcolor);
|
||||
if (strchr("VP", rf.type()) != NULL)
|
||||
@ -676,6 +681,7 @@ void TSection_properties_mask::get_section(TReport_section& rs) const
|
||||
rs.set_radius(get_num(F_RADIUS));
|
||||
rs.set_fore_color(_fgcolor);
|
||||
rs.set_back_color(_bgcolor);
|
||||
|
||||
TReport_font f;
|
||||
if (get_font_info(f))
|
||||
rs.set_font(f);
|
||||
@ -712,6 +718,7 @@ bool TReport_properties_mask::on_field_event(TOperable_field& o, TField_event e,
|
||||
|
||||
void TReport_properties_mask::set_report(const TReport& r)
|
||||
{
|
||||
set(F_FONT_AUTO, r.use_printer_font());
|
||||
set(F_DY, r.lpi());
|
||||
set_font_info(r.font());
|
||||
set(F_INCLUDE, ((TReport&)r).get_libraries());
|
||||
@ -723,11 +730,15 @@ void TReport_properties_mask::set_report(const TReport& r)
|
||||
|
||||
void TReport_properties_mask::get_report(TReport& r) const
|
||||
{
|
||||
r.set_lpi(get_int(F_DY));
|
||||
|
||||
TReport_font f;
|
||||
if (get_font_info(f))
|
||||
r.set_font(f);
|
||||
const bool af = get_bool(F_FONT_AUTO);
|
||||
r.set_use_printer_font(af);
|
||||
if (!af)
|
||||
{
|
||||
r.set_lpi(get_int(F_DY));
|
||||
TReport_font f;
|
||||
if (get_font_info(f))
|
||||
r.set_font(f);
|
||||
}
|
||||
|
||||
const TString& oldlib = r.get_libraries();
|
||||
if (oldlib != get(F_INCLUDE))
|
||||
|
@ -42,7 +42,8 @@
|
||||
#define F_DYNAMIC_HEIGHT 147
|
||||
#define F_RADIUS 148
|
||||
#define F_PATTERN 149
|
||||
|
||||
#define F_SHADE_OFFSET 150
|
||||
|
||||
#define F_LEVEL 160
|
||||
#define F_GROUP_BY 161
|
||||
#define F_HIDE_IF_NEEDED 162
|
||||
@ -50,7 +51,8 @@
|
||||
#define F_KEEP_WITH_NEXT 164
|
||||
#define F_CONDITION 165
|
||||
#define F_REPEAT 166
|
||||
|
||||
#define F_FONT_AUTO 167
|
||||
|
||||
#define F_SQL 201
|
||||
#define F_IMPORT_QRY 202
|
||||
#define F_NEW_QRY 203
|
||||
|
@ -161,19 +161,15 @@ LIST F_BORDER 1 12
|
||||
BEGIN
|
||||
PROMPT 2 7 "Bordo "
|
||||
ITEM "0|Nessuno"
|
||||
MESSAGE HIDE,F_RADIUS
|
||||
ITEM "1|Sottile"
|
||||
MESSAGE SHOW,F_RADIUS
|
||||
ITEM "2|Normale"
|
||||
MESSAGE SHOW,F_RADIUS
|
||||
ITEM "3|Spesso"
|
||||
MESSAGE SHOW,F_RADIUS
|
||||
END
|
||||
|
||||
NUMBER F_RADIUS 3
|
||||
STRING F_RADIUS 4
|
||||
BEGIN
|
||||
PROMPT 32 7 "Raggio smussatura "
|
||||
FLAGS "U"
|
||||
FLAGS "UR"
|
||||
END
|
||||
|
||||
LIST F_PATTERN 1 18
|
||||
@ -197,6 +193,12 @@ BEGIN
|
||||
MESSAGE SHOW,F_BGCOLOR
|
||||
END
|
||||
|
||||
STRING F_SHADE_OFFSET 4
|
||||
BEGIN
|
||||
PROMPT 32 8 "Ombreggiatura "
|
||||
FLAGS "UR"
|
||||
END
|
||||
|
||||
BUTTON F_FONT_SELECT 14 2
|
||||
BEGIN
|
||||
PROMPT 2 10 "~Font"
|
||||
|
@ -113,19 +113,15 @@ LIST F_BORDER 1 12
|
||||
BEGIN
|
||||
PROMPT 2 1 "Bordo "
|
||||
ITEM "0|Nessuno"
|
||||
MESSAGE HIDE,F_RADIUS
|
||||
ITEM "1|Sottile"
|
||||
MESSAGE SHOW,F_RADIUS
|
||||
ITEM "2|Normale"
|
||||
MESSAGE SHOW,F_RADIUS
|
||||
ITEM "3|Spesso"
|
||||
MESSAGE SHOW,F_RADIUS
|
||||
END
|
||||
|
||||
NUMBER F_RADIUS 3
|
||||
STRING F_RADIUS 4
|
||||
BEGIN
|
||||
PROMPT 26 1 "Raggio smussatura "
|
||||
FLAGS "U"
|
||||
FLAGS "UR"
|
||||
END
|
||||
|
||||
BUTTON F_FGCOLOR 14 1
|
||||
|
@ -1,21 +1,28 @@
|
||||
#include "ba8300.h"
|
||||
|
||||
PAGE "Report" -1 -1 60 13
|
||||
PAGE "Report" -1 -1 60 16
|
||||
|
||||
BOOLEAN F_FONT_AUTO
|
||||
BEGIN
|
||||
PROMPT 1 0 "Seleziona font in base alle impostazioni della stampante"
|
||||
MESSAGE FALSE ENABLE,F_FONT_SELECT|ENABLE,F_DY
|
||||
MESSAGE TRUE DISABLE,F_FONT_SELECT|DISABLE,F_DY
|
||||
END
|
||||
|
||||
NUMBER F_DY 2
|
||||
BEGIN
|
||||
PROMPT 1 0 "Linee per pollice "
|
||||
PROMPT 1 1 "Linee per pollice "
|
||||
CHEKCTYPE REQUIRED
|
||||
END
|
||||
|
||||
BUTTON F_FONT_SELECT 10 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "~Font"
|
||||
PROMPT 1 2 "~Font"
|
||||
END
|
||||
|
||||
SPREADSHEET F_PARAMS 0 -3
|
||||
BEGIN
|
||||
PROMPT 1 3 ""
|
||||
PROMPT 1 4 ""
|
||||
ITEM "Parametro@16"
|
||||
ITEM "Valore@50"
|
||||
END
|
||||
@ -32,31 +39,31 @@ END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Avanzate" -1 -1 50 16
|
||||
PAGE "Avanzate" -1 -1 60 16
|
||||
|
||||
MEMO F_INCLUDE 48 2
|
||||
MEMO F_INCLUDE 58 2
|
||||
BEGIN
|
||||
PROMPT 1 0 "Librerie (separate da ,) "
|
||||
END
|
||||
|
||||
MEMO F_PRESCRIPT 48 6
|
||||
MEMO F_PRESCRIPT 58 6
|
||||
BEGIN
|
||||
PROMPT 1 2 "Script iniziale"
|
||||
END
|
||||
|
||||
MEMO F_POSTSCRIPT 48 3
|
||||
MEMO F_POSTSCRIPT 58 5
|
||||
BEGIN
|
||||
PROMPT 1 8 "Script finale"
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 ""
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 ""
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include <xinclude.h>
|
||||
#include <statbar.h>
|
||||
|
||||
#include <colors.h>
|
||||
#include <diction.h>
|
||||
#include <image.h>
|
||||
#include <mask.h>
|
||||
@ -306,6 +307,11 @@ int TReport_tree::image_height() const
|
||||
return img != NULL ? img->height() : 0;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Utility
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TReport_window
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -347,6 +353,9 @@ protected:
|
||||
|
||||
int cpi() const;
|
||||
int lpi() const;
|
||||
|
||||
bool advanced_set_draw_tools(PAT_STYLE pat, int border, COLOR fore, COLOR back);
|
||||
void advanced_draw_rect(const RCT& r, PAT_STYLE pat, int border, COLOR fore, COLOR back, int radius, int shade);
|
||||
|
||||
public:
|
||||
virtual PNT log2dev(long x, long y) const;
|
||||
@ -967,6 +976,49 @@ TPoint TReport_window::dev2log(const PNT& pt) const
|
||||
return p;
|
||||
}
|
||||
|
||||
bool TReport_window::advanced_set_draw_tools(PAT_STYLE pat, int border, COLOR fore, COLOR back)
|
||||
{
|
||||
const bool has_pen = border > 0;
|
||||
const bool has_brush = pat > PAT_HOLLOW;
|
||||
const bool visible = has_pen || has_brush;
|
||||
if (visible)
|
||||
{
|
||||
if (has_pen)
|
||||
set_pen(fore, border, PAT_SOLID);
|
||||
else
|
||||
hide_pen();
|
||||
if (has_brush)
|
||||
set_brush(back, pat);
|
||||
else
|
||||
hide_brush();
|
||||
}
|
||||
return visible;
|
||||
}
|
||||
|
||||
void TReport_window::advanced_draw_rect(const RCT& r, PAT_STYLE pat, int border, COLOR fore, COLOR back, int radius, int shade)
|
||||
{
|
||||
if (shade != 0 && pat == PAT_SOLID)
|
||||
{
|
||||
if (advanced_set_draw_tools(pat, 0, COLOR_GRAY, COLOR_GRAY))
|
||||
{
|
||||
RCT rct = r;
|
||||
xvt_rect_offset(&rct, shade, shade);
|
||||
if (radius > 0)
|
||||
xvt_dwin_draw_roundrect(win(), &rct, radius, radius);
|
||||
else
|
||||
xvt_dwin_draw_rect(win(), (RCT*)&rct);
|
||||
}
|
||||
}
|
||||
|
||||
if (advanced_set_draw_tools(pat, border, fore, back))
|
||||
{
|
||||
if (radius > 0)
|
||||
xvt_dwin_draw_roundrect(win(), &r, radius, radius);
|
||||
else
|
||||
xvt_dwin_draw_rect(win(), (RCT*)&r);
|
||||
}
|
||||
}
|
||||
|
||||
void TReport_window::draw_grid()
|
||||
{
|
||||
const int k = 100;
|
||||
@ -998,7 +1050,7 @@ void TReport_window::draw_grid()
|
||||
|| (rs.pattern() >= PAT_SOLID && rs.back_color() != COLOR_WHITE));
|
||||
if (draw_back)
|
||||
{
|
||||
const PNT p = log2dev(x, y);;
|
||||
const PNT p = log2dev(x, y);
|
||||
RCT rct; xvt_rect_set(&rct, 0, 0, p.h, p.v);
|
||||
int rad = 0;
|
||||
if (rs.radius() > 0)
|
||||
@ -1007,7 +1059,7 @@ void TReport_window::draw_grid()
|
||||
const PNT pr = log2dev(rs.radius(),rs.radius());
|
||||
rad = min(pr.h-p0.h, pr.v-p0.v);
|
||||
}
|
||||
advanced_draw_rect(*this, rct, rs.pattern(), rs.border(), rs.fore_color(), rs.back_color(), rad);
|
||||
advanced_draw_rect(rct, rs.pattern(), rs.border(), rs.fore_color(), rs.back_color(), rad, 0);
|
||||
}
|
||||
|
||||
for (int i = x/k; i > 0; i--)
|
||||
@ -1024,7 +1076,7 @@ void TReport_window::draw_grid()
|
||||
if (p.v < rct.bottom)
|
||||
{
|
||||
hide_pen();
|
||||
set_brush(COLOR_LTGRAY, PAT_DIAGCROSS);
|
||||
set_brush(MASK_BACK_COLOR, PAT_DIAGCROSS);
|
||||
rct.top = p.v;
|
||||
xvt_dwin_draw_rect(win(), &rct);
|
||||
}
|
||||
@ -1065,6 +1117,13 @@ void TReport_window::draw_field(const TReport_field& rf)
|
||||
rad = rf.radius() * width / rf.get_rect().width();
|
||||
}
|
||||
|
||||
int off = 0;
|
||||
if (rf.shade_offset() > 0)
|
||||
{
|
||||
const int width = r.right - r.left;
|
||||
off = rf.shade_offset() * width / rf.get_rect().width();
|
||||
}
|
||||
|
||||
PAT_STYLE back_pattern = PAT_HOLLOW;
|
||||
const int k = (rf.hidden() ? 1 : 0) + (rf.deactivated() ? 2 : 0);
|
||||
switch (k)
|
||||
@ -1078,7 +1137,7 @@ void TReport_window::draw_field(const TReport_field& rf)
|
||||
switch (rf.type())
|
||||
{
|
||||
case 'E':
|
||||
if (advanced_set_draw_tools(*this, rf.pattern(), rf.border(), rf.fore_color(), rf.back_color()))
|
||||
if (advanced_set_draw_tools(rf.pattern(), rf.border(), rf.fore_color(), rf.back_color()))
|
||||
xvt_dwin_draw_oval(win(), &r);
|
||||
back_pattern = PAT_HOLLOW;
|
||||
break;
|
||||
@ -1090,11 +1149,11 @@ void TReport_window::draw_field(const TReport_field& rf)
|
||||
const TImage* img = _images.image(name);
|
||||
if (img != NULL && img->ok())
|
||||
img->draw(win(), r);
|
||||
advanced_draw_rect(*this, r, PAT_HOLLOW, rf.border(), rf.fore_color(), COLOR_WHITE, 0);
|
||||
advanced_draw_rect(r, PAT_HOLLOW, rf.border(), rf.fore_color(), COLOR_WHITE, 0, off);
|
||||
}
|
||||
break;
|
||||
case 'L':
|
||||
if (advanced_set_draw_tools(*this, PAT_SOLID, rf.border(), rf.fore_color(), COLOR_WHITE))
|
||||
if (advanced_set_draw_tools(PAT_SOLID, rf.border(), rf.fore_color(), COLOR_WHITE))
|
||||
{
|
||||
const PNT f = { r.top, r.left };
|
||||
xvt_dwin_draw_set_pos(win(), f);
|
||||
@ -1104,11 +1163,11 @@ void TReport_window::draw_field(const TReport_field& rf)
|
||||
back_pattern = PAT_HOLLOW;
|
||||
break;
|
||||
case 'R':
|
||||
advanced_draw_rect(*this, r, rf.pattern(), rf.border(), rf.fore_color(), rf.back_color(), rad);
|
||||
advanced_draw_rect(r, rf.pattern(), rf.border(), rf.fore_color(), rf.back_color(), rad, off);
|
||||
break;
|
||||
case 'T':
|
||||
{
|
||||
advanced_draw_rect(*this, r, rf.pattern(), rf.border(), rf.fore_color(), rf.back_color(), rad);
|
||||
advanced_draw_rect(r, rf.pattern(), rf.border(), rf.fore_color(), rf.back_color(), rad, off);
|
||||
xvt_dwin_set_font(win(), rf.font().get_xvt_font(*this));
|
||||
set_color(rf.fore_color(), rf.back_color());
|
||||
TString str = rf.picture();
|
||||
@ -1121,9 +1180,9 @@ void TReport_window::draw_field(const TReport_field& rf)
|
||||
else
|
||||
{
|
||||
if (rf.border() <= 0) // Rendi piu' visibile il bordo dei campi che non ce l'hanno
|
||||
advanced_draw_rect(*this, r, PAT_HOLLOW, 1, COLOR_LTGRAY, COLOR_WHITE, 0);
|
||||
advanced_draw_rect(r, PAT_HOLLOW, 1, COLOR_LTGRAY, COLOR_WHITE, 0, 0);
|
||||
else
|
||||
advanced_draw_rect(*this, r, rf.pattern(), rf.border(), rf.fore_color(), rf.back_color(), rad);
|
||||
advanced_draw_rect(r, rf.pattern(), rf.border(), rf.fore_color(), rf.back_color(), rad, off);
|
||||
}
|
||||
|
||||
if (rf.link().not_empty())
|
||||
@ -1158,7 +1217,7 @@ void TReport_window::draw_field(const TReport_field& rf)
|
||||
}
|
||||
if (rf.selected())
|
||||
{
|
||||
advanced_set_draw_tools(*this, PAT_SOLID, 0, COLOR_WHITE, COLOR_GRAY);
|
||||
advanced_set_draw_tools(PAT_SOLID, 0, COLOR_WHITE, COLOR_GRAY);
|
||||
const int k = 5;
|
||||
RCT s = r; s.right = s.left+k; s.bottom = s.top+k;
|
||||
xvt_dwin_draw_rect(win(), &s);
|
||||
|
Loading…
x
Reference in New Issue
Block a user