Modificata gestione font

Aggiustate creazioni text e field


git-svn-id: svn://10.65.10.50/trunk@2804 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1996-05-14 10:05:44 +00:00
parent 10296153bb
commit 8c4e5f3a66

@ -82,12 +82,17 @@ HIDDEN XVT_FNTID DEF_FONT = NULL;
HIDDEN XVT_FNTID FAT_FONT = NULL;
XVT_FNTID xvt_default_font(bool bold)
{
{
if (DEF_FONT == NULL)
{
{
DEF_FONT = xvt_dwin_get_font(TASK_WIN);
FAT_FONT = xvt_dwin_get_font(TASK_WIN);
TConfig font(CONFIG_USER, "Font");
TString font_ser_desc(font.get("FontDesc"));
if (font_ser_desc.empty())
font_ser_desc << "01\\Courier\\0\\10\\WIN01/-13/0/0/0/400/0/0/0/0/1/2/1/49/Courier";
xvt_font_deserialize(DEF_FONT, (char *)(const char *) font_ser_desc);
/*
#if XVT_OS == XVT_OS_WIN
HFONT NormalFont = (HFONT)GetStockObject(ANSI_FIXED_FONT);
LOGFONT LogFont;
@ -125,19 +130,29 @@ XVT_FNTID xvt_default_font(bool bold)
desc.add(LogFont.lfQuality);
desc.add(LogFont.lfPitchAndFamily);
desc.add(LogFont.lfFaceName);
xvt_font_set_native_desc(DEF_FONT, (char*)(const char*)desc);
CHECK(xvt_font_has_valid_native_desc(DEF_FONT), "Bad font description");
CHECK(xvt_font_has_valid_native_desc(DEF_FONT), "Bad font description");
#endif
*/
xvt_font_map_using_default(DEF_FONT);
CHECK(xvt_font_is_mapped(DEF_FONT), "Can't map native font");
xvt_dwin_set_font(TASK_WIN, DEF_FONT);
xvt_dwin_set_font(TASK_WIN, DEF_FONT);
xvt_menu_set_font_sel(TASK_WIN, DEF_FONT);
FAT_FONT = xvt_font_create();
xvt_font_copy(FAT_FONT, DEF_FONT, XVT_FA_ALL);
xvt_font_set_style(FAT_FONT, XVT_FS_BOLD);
/*
desc.add(600, 5);
xvt_font_set_native_desc(FAT_FONT, (char*)(const char*)desc);
CHECK(xvt_font_has_valid_native_desc(FAT_FONT), "Bad font description");
*/
xvt_font_map_using_default(FAT_FONT);
CHECK(xvt_font_is_mapped(FAT_FONT), "Can't map native font");
// Get true text size
#if XVT_OS == XVT_OS_WIN
TEXTMETRIC tm;
HDC hdc = (HDC)xvt_vobj_get_attr(TASK_WIN, ATTR_NATIVE_GRAPHIC_CONTEXT);
GetTextMetrics(hdc, &tm);
@ -514,8 +529,8 @@ void TControl::update_tab_cid()
void TControl::coord2rct(WINDOW win, short x, short y, short dx, short dy, XI_RCT& rct) const
{
// Spazio da lasciare prima di toccare i bordi
const int X_FU_DELTA = 2;
const int Y_FU_DELTA = 1;
const int X_FU_DELTA = XI_FU_MULTIPLE / 4;
const int Y_FU_DELTA = XI_FU_MULTIPLE / 8;
XI_OBJ* itf = get_interface(win);
@ -556,7 +571,7 @@ void TControl::coord2rct(WINDOW win, short x, short y, short dx, short dy, XI_RC
}
else
{
rct.left = (x+1) * XI_FU_MULTIPLE;
rct.left = x * XI_FU_MULTIPLE + X_FU_DELTA;
if (dx > 0 && MAXX > 80 * XI_FU_MULTIPLE)
rct.left += (MAXX - 80 * XI_FU_MULTIPLE) / 2;
@ -792,8 +807,8 @@ TText_control::TText_control(WINDOW win, short cid,
width = t.len();
if (bold)
width = 4 * width / 3;
}
XI_RCT rct; coord2rct(win, left, top, width, height, rct);
}
XI_RCT rct; coord2rct(win, left, top, width, height, rct); rct.right += XI_FU_MULTIPLE / 2;
const unsigned long attrib = flags2attr(flags);
XI_OBJ_DEF* def = xi_add_text_def(NULL, cid, &rct, attrib, (char*)(const char*)t);
CHECKS(def, "Can't create the definition of TText_control:", text);
@ -827,7 +842,7 @@ TGroupbox_control::TGroupbox_control(WINDOW win, short cid,
: TText_control(win, cid, left, top, width, 1, flags, text)
{
XI_RCT rct; coord2rct(win, left, top, width, height, rct);
rct.top += XI_FU_MULTIPLE;
rct.top += XI_FU_MULTIPLE - 2;
rct.bottom -= Y_FU_MULTIPLE / 2;
XI_OBJ_DEF* def = xi_add_rect_def(NULL, cid, &rct, XI_ATR_VISIBLE, 0, 0); // Ignore colors
@ -896,7 +911,7 @@ void TField_control::create(WINDOW win, short cid,
if (button)
{
f->button = TRUE;
f->pixel_button_distance = 4;
f->pixel_button_distance = 1;
}
if (rct.bottom - rct.top > Y_FU_MULTIPLE)
f->xi_rct = rct;
@ -906,6 +921,11 @@ void TField_control::create(WINDOW win, short cid,
CHECKD(form, "Can't create the form for field ", cid);
_obj = xi_get_obj(form, cid);
CHECKD(_obj, "Can't create field ", cid);
STX_DATA * stx = (STX_DATA*)_obj->v.field->stx;
const int offset = _obj->v.field->btn_rct.left - stx->rct.right + 1;
_obj->v.field->btn_rct.left -= offset ;
_obj->v.field->btn_rct.right -= offset;
update_tab_cid();