Patch level : 4.0
Files correlati : Ricompilazione Demo : [ ] Commento : codeb.c risolti piccoli conflitti colors.cpp aggiunta conversione da colori a grigi controls.cpp migliorata visibilita' bottoni disabilitati image.cpp aggiunto metodo fade_to_gray dei Visage retprint.cpp corretta esportazione testo git-svn-id: svn://10.65.10.50/trunk@14955 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
4bd66668c9
commit
5d121d7663
@ -459,7 +459,7 @@ int DB_add(int handle)
|
|||||||
if (rt == 0 && is_locked == 0)
|
if (rt == 0 && is_locked == 0)
|
||||||
{
|
{
|
||||||
while ((rt = d4flush(data)) == r4locked)
|
while ((rt = d4flush(data)) == r4locked)
|
||||||
u4delaySec();
|
u4delaySec();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DB_unlock(handle);
|
DB_unlock(handle);
|
||||||
@ -1168,7 +1168,7 @@ int DB_memowrite( const int handle, const char * fieldname, const char * data )
|
|||||||
if (ret == 0 && !DB_file_locked(handle))
|
if (ret == 0 && !DB_file_locked(handle))
|
||||||
{
|
{
|
||||||
d4flush(dbdata[handle]);
|
d4flush(dbdata[handle]);
|
||||||
d4unlock(dbdata[handle]);
|
d4unlock(dbdata[handle]);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -46,8 +46,16 @@ COLOR blend_colors(COLOR col1, COLOR col2, double perc)
|
|||||||
const byte g = byte(g1 * perc + g2*(1.0-perc));
|
const byte g = byte(g1 * perc + g2*(1.0-perc));
|
||||||
const byte b = byte(b1 * perc + b2*(1.0-perc));
|
const byte b = byte(b1 * perc + b2*(1.0-perc));
|
||||||
|
|
||||||
// return RGB2COLOR(r, g, b);
|
return MAKE_COLOR(r, g, b);
|
||||||
return MAKE_COLOR(r, g, b); // Faster
|
}
|
||||||
|
|
||||||
|
COLOR grayed_color(COLOR col)
|
||||||
|
{
|
||||||
|
const unsigned int r = XVT_COLOR_GET_RED(col);
|
||||||
|
const unsigned int g = XVT_COLOR_GET_GREEN(col);
|
||||||
|
const unsigned int b = XVT_COLOR_GET_BLUE(col);
|
||||||
|
const unsigned int k = (unsigned int)(0.299 * r + 0.587 * g + 0.114 * b);
|
||||||
|
return MAKE_COLOR(k, k, k);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int color_distance(COLOR col1, COLOR col2)
|
unsigned int color_distance(COLOR col1, COLOR col2)
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
COLOR RGB2COLOR(unsigned char red, unsigned char green, unsigned char blue);
|
COLOR RGB2COLOR(unsigned char red, unsigned char green, unsigned char blue);
|
||||||
COLOR choose_color(COLOR col = COLOR_BLACK, WINDOW win = NULL_WIN);
|
COLOR choose_color(COLOR col = COLOR_BLACK, WINDOW win = NULL_WIN);
|
||||||
COLOR blend_colors(COLOR col1, COLOR col2, double perc = 0.5);
|
COLOR blend_colors(COLOR col1, COLOR col2, double perc = 0.5);
|
||||||
|
COLOR grayed_color(COLOR col);
|
||||||
unsigned int color_distance(COLOR col1, COLOR col2);
|
unsigned int color_distance(COLOR col1, COLOR col2);
|
||||||
|
|
||||||
extern COLOR MASK_BACK_COLOR;
|
extern COLOR MASK_BACK_COLOR;
|
||||||
|
@ -85,22 +85,25 @@ KEY TControl::xiev_to_key(const XI_EVENT* xiev)
|
|||||||
// TPicture_array
|
// TPicture_array
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TPicture_array : public TArray
|
class TPicture_array
|
||||||
{
|
{
|
||||||
|
TArray _enabled, _disabled;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool add(short id);
|
bool add(short id);
|
||||||
|
|
||||||
const TImage& image(short id) const { return (const TImage&)operator[](id); }
|
const TImage& image(short id) const { return (const TImage&)_enabled[id]; }
|
||||||
bool exist(short id) const { return objptr(id) != NULL; }
|
const TImage& disabled_image(short id) const { return (const TImage&)_disabled[id]; }
|
||||||
|
bool exist(short id) const { return _enabled.objptr(id) != NULL; }
|
||||||
void reload();
|
void reload();
|
||||||
|
|
||||||
TPicture_array() : TArray(128) {}
|
TPicture_array() {}
|
||||||
virtual ~TPicture_array() {}
|
virtual ~TPicture_array() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
bool TPicture_array::add(short id)
|
bool TPicture_array::add(short id)
|
||||||
{
|
{
|
||||||
TImage* i = (TImage*)objptr(id);
|
TImage* i = (TImage*)_enabled.objptr(id);
|
||||||
if (i == NULL)
|
if (i == NULL)
|
||||||
{
|
{
|
||||||
if (SMALL_ICONS)
|
if (SMALL_ICONS)
|
||||||
@ -117,7 +120,11 @@ bool TPicture_array::add(short id)
|
|||||||
if (i->ok())
|
if (i->ok())
|
||||||
{
|
{
|
||||||
i->convert_transparent_color(BTN_BACK_COLOR);
|
i->convert_transparent_color(BTN_BACK_COLOR);
|
||||||
TArray::add(i, id);
|
_enabled.add(i, id);
|
||||||
|
|
||||||
|
TImage* d = new TImage(*i);
|
||||||
|
d->fade_to_gray(COLOR_GRAY);
|
||||||
|
_disabled.add(d, id);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -130,9 +137,10 @@ bool TPicture_array::add(short id)
|
|||||||
|
|
||||||
void TPicture_array::reload()
|
void TPicture_array::reload()
|
||||||
{
|
{
|
||||||
for (short id = last(); id > 0; id--) if (exist(id))
|
_disabled.destroy();
|
||||||
|
for (int id = _enabled.last(); id > 0; id = _enabled.pred(id))
|
||||||
{
|
{
|
||||||
destroy(id);
|
_enabled.destroy(id);
|
||||||
add(id);
|
add(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1675,7 +1683,7 @@ void TPushbutton_control::update()
|
|||||||
const short bmp = (_bmp_dn > 0 && _obj->v.btn->down) ? _bmp_dn : _bmp_up;
|
const short bmp = (_bmp_dn > 0 && _obj->v.btn->down) ? _bmp_dn : _bmp_up;
|
||||||
if (bmp > 0)
|
if (bmp > 0)
|
||||||
{
|
{
|
||||||
const TImage& i = _picture->image(bmp);
|
const TImage& i = attrib & XI_ATR_ENABLED ? _picture->image(bmp) : _picture->disabled_image(bmp);
|
||||||
if (!SMALL_ICONS || i.width() > i.height()*2)
|
if (!SMALL_ICONS || i.width() > i.height()*2)
|
||||||
{
|
{
|
||||||
int x = (rct.right + rct.left - i.width()) / 2;
|
int x = (rct.right + rct.left - i.width()) / 2;
|
||||||
@ -1687,8 +1695,7 @@ void TPushbutton_control::update()
|
|||||||
}
|
}
|
||||||
|
|
||||||
i.draw(win, x, y);
|
i.draw(win, x, y);
|
||||||
|
/* if (!(attrib & XI_ATR_ENABLED))
|
||||||
if (!(attrib & XI_ATR_ENABLED))
|
|
||||||
{
|
{
|
||||||
CPEN pen;
|
CPEN pen;
|
||||||
pen.width = 1;
|
pen.width = 1;
|
||||||
@ -1710,7 +1717,7 @@ void TPushbutton_control::update()
|
|||||||
p.v += i.height();
|
p.v += i.height();
|
||||||
xvt_dwin_draw_line(win, p);
|
xvt_dwin_draw_line(win, p);
|
||||||
}
|
}
|
||||||
}
|
} */
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2501,4 +2508,4 @@ TListbox_control::TListbox_control(WINDOW win, short cid,
|
|||||||
TListbox_control::~TListbox_control()
|
TListbox_control::~TListbox_control()
|
||||||
{
|
{
|
||||||
delete _ddl; _ddl = NULL;
|
delete _ddl; _ddl = NULL;
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum TDongleHardware { _dongle_unknown, _dongle_hardlock, _dongle_eutron, _dongle_network };
|
enum TDongleHardware { _dongle_unknown, _dongle_hardlock, _dongle_eutron, _dongle_network };
|
||||||
enum TDongleType { _no_dongle, _user_dongle, _developer_dongle, _aga_dongle, _prassi_dongle };
|
enum TDongleType { _no_dongle, _user_dongle, _developer_dongle, _aga_dongle };
|
||||||
enum { MAX_DONGLE_ASSIST = 8 };
|
enum { MAX_DONGLE_ASSIST = 8 };
|
||||||
|
|
||||||
class TDongle : public TObject
|
class TDongle : public TObject
|
||||||
|
@ -78,18 +78,7 @@ TImage::TImage(const TImage& im, short w, short h) : _image(NULL)
|
|||||||
set(xvt_image_create(fmt, w, h, 0L));
|
set(xvt_image_create(fmt, w, h, 0L));
|
||||||
|
|
||||||
if (ok())
|
if (ok())
|
||||||
{
|
|
||||||
#ifndef XVAGA
|
|
||||||
if (fmt == XVT_IMAGE_CL8)
|
|
||||||
{
|
|
||||||
const short colors = xvt_image_get_ncolors(im._image);
|
|
||||||
xvt_image_set_ncolors(_image, colors);
|
|
||||||
for (short c = 0; c < colors; c++)
|
|
||||||
xvt_image_set_clut(_image, c, xvt_image_get_clut((XVT_IMAGE)im._image, c));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
xvt_image_transfer(_image, (XVT_IMAGE)im._image, &_src, (RCT*)&im._src);
|
xvt_image_transfer(_image, (XVT_IMAGE)im._image, &_src, (RCT*)&im._src);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Certified 90%
|
// Certified 90%
|
||||||
@ -288,3 +277,49 @@ void TImage::convert_transparent_color(COLOR transparent)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TImage::fade_to_gray(int gray)
|
||||||
|
// @comm Legge nell'immagine i pixel diversi da quello in alto a sinistra e li setta
|
||||||
|
// in grigio
|
||||||
|
{
|
||||||
|
if (_image == NULL)
|
||||||
|
return; // Null image
|
||||||
|
|
||||||
|
const COLOR trans = get_pixel(0,0) & 0x00FFFFFF;
|
||||||
|
if (xvt_image_get_format(_image) == XVT_IMAGE_CL8)
|
||||||
|
{
|
||||||
|
for (int index = xvt_image_get_ncolors(_image)-1; index >=0; index--)
|
||||||
|
{
|
||||||
|
COLOR pixie = xvt_image_get_clut(_image, index) & 0x00FFFFFF;
|
||||||
|
if (pixie != trans)
|
||||||
|
{
|
||||||
|
pixie = grayed_color(pixie);
|
||||||
|
if (gray >= 0)
|
||||||
|
{
|
||||||
|
const int k = (XVT_COLOR_GET_RED(pixie) + gray) / 2;
|
||||||
|
pixie = MAKE_COLOR(k,k,k);
|
||||||
|
}
|
||||||
|
xvt_image_set_clut(_image, index, pixie);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
short dx, dy; xvt_image_get_dimensions(_image, &dx, &dy);
|
||||||
|
for (short y = 0; y < dy; y++) for (short x = 0; x < dx; x++)
|
||||||
|
{
|
||||||
|
COLOR pixie = get_pixel(x, y) & 0x00FFFFFF;
|
||||||
|
if (pixie != trans)
|
||||||
|
{
|
||||||
|
pixie = grayed_color(pixie);
|
||||||
|
if (gray >= 0)
|
||||||
|
{
|
||||||
|
const int k = (XVT_COLOR_GET_RED(pixie) + gray) / 2;
|
||||||
|
pixie = MAKE_COLOR(k,k,k);
|
||||||
|
}
|
||||||
|
set_pixel(x, y, pixie);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -80,6 +80,10 @@ public:
|
|||||||
// @cmember Setta i colori dell'immagine in modo da renderla trasparente
|
// @cmember Setta i colori dell'immagine in modo da renderla trasparente
|
||||||
// usando l'angolo in alto a sinistra dell'imagine stessa
|
// usando l'angolo in alto a sinistra dell'imagine stessa
|
||||||
void convert_transparent_color(COLOR transparent);
|
void convert_transparent_color(COLOR transparent);
|
||||||
|
|
||||||
|
// Trasforma l'immagine in toni di grigio.
|
||||||
|
// Se gray>=0 sfuma ulteriormente verso il tono specificato
|
||||||
|
void fade_to_gray(int gray = -1);
|
||||||
|
|
||||||
// @cmember Setta l'<p n>.esime entry della paletta al colore <p c>
|
// @cmember Setta l'<p n>.esime entry della paletta al colore <p c>
|
||||||
void set_clut(byte n, COLOR c);
|
void set_clut(byte n, COLOR c);
|
||||||
|
@ -1452,9 +1452,8 @@ bool TBook::print_page(TWindow& win, size_t page)
|
|||||||
|
|
||||||
bool TBook::export_text(const TFilename& fname)
|
bool TBook::export_text(const TFilename& fname)
|
||||||
{
|
{
|
||||||
const TFixed_string ext(fname.ext());
|
if (fname.ends_with(".pdf", true))
|
||||||
if (ext.compare("pdf", true) == 0)
|
return export_pdf(fname);
|
||||||
export_pdf(fname);
|
|
||||||
|
|
||||||
TString str(1024);
|
TString str(1024);
|
||||||
char* buffer = str.get_buffer();
|
char* buffer = str.get_buffer();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user