Patch level : 4.0

Files correlati     : xvaga.dll
Ricompilazione Demo : [ ]
Commento            :
Tolte deprecazioni ed aggiunti gradienti


git-svn-id: svn://10.65.10.50/trunk@14925 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2007-02-19 09:36:55 +00:00
parent a44ba2f2a7
commit 7ad9cab875
4 changed files with 99 additions and 51 deletions

View File

@ -41,12 +41,12 @@
// Funzione interna di utilita'
MENU_ITEM* xvt_menu_duplicate_tree(const MENU_ITEM* m);
XVT_CONFIG* _config_ = NULL;
wxWindow* _task_win = NULL;
wxWindow* _mouse_trapper = NULL;
RCT _startup_rect = { 0,0,0,0 };
wxString* _startup_dir = NULL;
wxString _startup_dir;
wxString _strDefaultStatbarText;
wxString _appl_name;
static wxHashTable _nice_windows;
static wxHashTable _nice_icons;
@ -56,6 +56,9 @@ static XVT_ERRMSG_HANDLER _error_handler = NULL;
#define XVT_ASSERT(test) assert_box((test), __LINE__, __FILE__ )
const wxString& _GetAppTitle()
{ return _appl_name; }
void assert_box(bool test, int line, const char * file)
{
if (!test)
@ -63,9 +66,9 @@ void assert_box(bool test, int line, const char * file)
bool display = (_error_handler == NULL) || (_error_handler(SEV_FATAL, NULL) == FALSE);
if (display)
{
const wxString strMessage = wxString::Format("Sorry, the application passed some invalid parameters on line %d file %s.", line, file);
const wxString strCaption = "Emulated XVT Error ";
::wxMessageBox(strMessage, strCaption, wxOK|wxICON_ERROR);
wxString strMessage;
strMessage.Printf("Sorry, the application passed some invalid parameters on line %d file %s.", line, file);
::wxMessageBox(strMessage, _GetAppTitle(), wxOK|wxICON_ERROR);
}
}
}
@ -110,7 +113,7 @@ wxRect NormalizeRCT(const RCT* prct)
wxString GetResourceIni()
{
wxString strName;
strName = *_startup_dir;
strName = _startup_dir;
strName += "/res/resource.ini";
return strName;
}
@ -125,12 +128,12 @@ wxString GetResourceName(const char* type, int rid)
wxString val;
if (ini.Read(wxString::Format("%d", rid), &val))
{
strName = *_startup_dir;
strName = _startup_dir;
strName += "/custom/";
strName += val;
if (!wxFileExists(strName))
{
strName = *_startup_dir;
strName = _startup_dir;
strName += "/res/";
strName += val;
}
@ -1362,7 +1365,7 @@ void xvt_app_create(int argc, char **argv, unsigned long flags,
#endif
_task_win_handler = eh;
_config_ = config;
_appl_name = config->appl_name;
const wxString title = config->taskwin_title;
@ -1450,7 +1453,7 @@ void xvt_app_create(int argc, char **argv, unsigned long flags,
if (ret != 0)
{
// Simula main loop
xvt_app_process_pending_events();
xvt_app_process_pending_events();
}
a->ExitMainLoop(); // Non entrare nel main loop di wxWindows
}
@ -1479,9 +1482,8 @@ void xvt_app_process_pending_events(void)
if (a != NULL)
{
while (a->Pending())
a->Dispatch();
a->Yield(true);
a->Dispatch();
a->Yield(true);
}
}
@ -1536,14 +1538,12 @@ char* xvt_cb_get_data(CB_FORMAT cbfmt, char *name, long *sizep)
BOOLEAN xvt_cb_has_format(CB_FORMAT fmt, char *name)
{
BOOLEAN ok = fmt == CB_TEXT && wxTheClipboard->IsSupported(wxDF_TEXT);
return ok;
return (fmt == CB_TEXT) && wxTheClipboard->IsSupported(wxDF_TEXT);
}
BOOLEAN xvt_cb_open(BOOLEAN writing)
{
wxTheClipboard->Open();
return TRUE;
return wxTheClipboard->Open();
}
BOOLEAN xvt_cb_put_data(CB_FORMAT cbfmt, char *name, long size, PICTURE pic)
@ -1737,16 +1737,6 @@ BOOLEAN xvt_dongle_sl_write_block(unsigned short reg, unsigned short size, const
// Common dialogs
///////////////////////////////////////////////////////////
wxString _GetAppTitle()
{
wxString strTitle;
if (_config_ != NULL)
strTitle = _config_->appl_name;
else
strTitle = "CAMPO";
return strTitle;
}
COLOR xvt_dm_post_choose_color(WINDOW win, COLOR xc)
{
CAST_COLOR(xc, wc);
@ -1772,7 +1762,6 @@ COLOR xvt_dm_post_choose_color(WINDOW win, COLOR xc)
return xc;
}
class TwxCalendarDlg : public wxDialog
{
enum { ID_CAL = 1883 };
@ -1790,7 +1779,7 @@ public:
};
BEGIN_EVENT_TABLE(TwxCalendarDlg, wxDialog)
EVT_CALENDAR(wxID_ANY, TwxCalendarDlg::OnCalendar)
EVT_CALENDAR(wxID_ANY, TwxCalendarDlg::OnCalendar)
END_EVENT_TABLE()
void TwxCalendarDlg::OnCalendar(wxCalendarEvent& event)
@ -1874,7 +1863,7 @@ BOOLEAN xvt_dm_post_speech(const char* text, int priority, BOOLEAN async)
return ok;
}
ASK_RESPONSE xvt_dm_post_ask(const char* Btn1, const char*Btn2, const char* Btn3, const char* fmt)
ASK_RESPONSE xvt_dm_post_ask(const char* Btn1, const char* Btn2, const char* Btn3, const char* fmt)
{
int nFlags = wxCENTRE | wxICON_QUESTION | wxYES_NO;
if (Btn3 == NULL)
@ -1886,12 +1875,11 @@ ASK_RESPONSE xvt_dm_post_ask(const char* Btn1, const char*Btn2, const char* Btn3
nFlags |= wxCANCEL;
xvt_dm_post_speech(fmt, 3, TRUE);
const int answer = wxMessageBox(fmt, _GetAppTitle(), nFlags);
const int answer = ::wxMessageBox(fmt, _GetAppTitle(), nFlags);
switch(answer)
{
case wxYES: xvt_dm_post_speech("si", 7, TRUE); break;
case wxNO : xvt_dm_post_speech("no", 7, TRUE); break;
case wxYES: xvt_dm_post_speech("si", 7, TRUE); break;
case wxNO : xvt_dm_post_speech("no", 7, TRUE); break;
default : xvt_dm_post_speech("annulla", 7, TRUE); break;
}
@ -1996,14 +1984,14 @@ BOOLEAN xvt_dm_post_font_sel(WINDOW win, XVT_FNTID font_id, PRINT_RCD *precp, un
void xvt_dm_post_message(const char *fmt)
{
xvt_dm_post_speech(fmt, 2, TRUE);
wxMessageBox(fmt, _GetAppTitle(), wxOK | wxCENTRE | wxICON_INFORMATION);
::wxMessageBox(fmt, _GetAppTitle(), wxOK | wxCENTRE | wxICON_INFORMATION);
xvt_dm_post_speech("OK", 7, TRUE);
}
void xvt_dm_post_note(const char *fmt)
{
xvt_dm_post_speech(fmt, 2, TRUE);
wxMessageBox(fmt, _GetAppTitle(), wxOK | wxCENTRE | wxICON_EXCLAMATION);
::wxMessageBox(fmt, _GetAppTitle(), wxOK | wxCENTRE | wxICON_EXCLAMATION);
xvt_dm_post_speech("OK", 7, TRUE);
}
@ -2018,7 +2006,7 @@ char* xvt_dm_post_string_prompt(const char* message, char* response, int respons
void xvt_dm_post_warning(const char *fmt)
{
xvt_dm_post_speech(fmt, 1, TRUE);
wxMessageBox(fmt, _GetAppTitle(), wxOK | wxCENTRE | wxICON_EXCLAMATION);
::wxMessageBox(fmt, _GetAppTitle(), wxOK | wxCENTRE | wxICON_EXCLAMATION);
xvt_dm_post_speech("OK", 7, TRUE);
}
@ -2320,6 +2308,47 @@ void xvt_dwin_draw_arc(WINDOW win, const RCT* r, int sx, int sy, int ex, int ey)
}
}
void xvt_dwin_draw_gradient_circular(WINDOW win, const RCT* r, COLOR col1, COLOR col2, const PNT* center)
{
if (r != NULL)
{
CAST_DC(win, dc);
const wxRect rect = NormalizeRCT(r);
CAST_COLOR(col1, color1);
CAST_COLOR(col2, color2);
if (center != NULL)
dc.GradientFillConcentric(rect, color1, color2, wxPoint(center->h, center->v));
else
dc.GradientFillConcentric(rect, color1, color2);
}
}
void xvt_dwin_draw_gradient_linear(WINDOW win, const RCT* r, COLOR col1, COLOR col2, int angle)
{
if (r != NULL)
{
CAST_DC(win, dc);
const wxRect rect = NormalizeRCT(r);
CAST_COLOR(col1, color1);
CAST_COLOR(col2, color2);
angle %= 360;
if (angle < 0)
angle += 360;
wxDirection dir = wxDOWN;
switch (angle / 90)
{
case 0: dir = wxRIGHT; break;
case 1: dir = wxUP; break;
case 2: dir = wxLEFT; break;
default: dir = wxDOWN; break;
}
dc.GradientFillLinear(rect, color1, color2, dir);
}
}
void xvt_dwin_draw_icon(WINDOW win, int x, int y, int rid)
{
wxIcon* ico = ::GetIconResource(rid);
@ -3036,9 +3065,9 @@ BOOLEAN xvt_fsys_convert_str_to_fspec(const char *mbs, FILE_SPEC *fs)
void xvt_fsys_get_default_dir(DIRECTORY *dirp)
{
if (_startup_dir == NULL)
_startup_dir = new wxString(::wxGetCwd());
xvt_fsys_convert_str_to_dir(*_startup_dir, dirp);
if (_startup_dir.IsEmpty())
_startup_dir = ::wxGetCwd();
xvt_fsys_convert_str_to_dir(_startup_dir, dirp);
}
BOOLEAN xvt_fsys_get_dir(DIRECTORY *dirp)
@ -3355,7 +3384,7 @@ XVT_IMAGE xvt_image_read(const char* filenamep)
wxString name;
if (isalpha(filenamep[0u]))
{
name = *_startup_dir;
name = _startup_dir;
name += "/";
}
name += filenamep;
@ -3733,6 +3762,15 @@ BOOLEAN xvt_rect_set_pos(RCT *rctp, PNT pos)
return ok;
}
void xvt_rect_inflate(RCT *rctp, short ix, short iy)
{
if (rctp != NULL)
{
rctp->left -= ix; rctp->right += ix;
rctp->top -= iy; rctp->bottom += iy;
}
}
///////////////////////////////////////////////////////////
// Resource management
///////////////////////////////////////////////////////////
@ -4741,7 +4779,15 @@ long xvt_vobj_get_attr(WINDOW win, long data)
case ATTR_WIN_PM_DRAWABLE_TWIN:
ret = TRUE;
break;
default: SORRY_BOX(); break;
case ATTR_ICON_WIDTH:
ret = wxSystemSettings::GetMetric(wxSYS_ICON_X);
break;
case ATTR_ICON_HEIGHT:
ret = wxSystemSettings::GetMetric(wxSYS_ICON_Y);
break;
default:
SORRY_BOX();
break;
}
return ret;
}

View File

@ -86,6 +86,6 @@ public:
virtual ~TPrintDC();
};
wxString _GetAppTitle();
const wxString& _GetAppTitle();
#endif

View File

@ -95,6 +95,8 @@ XVTDLL BOOLEAN xvt_dongle_sl_write_block(unsigned short reg, unsigned short size
XVTDLL void xvt_dwin_clear(WINDOW win, COLOR col);
XVTDLL void xvt_dwin_draw_arc(WINDOW win, const RCT* r, int sx, int sy, int ex, int ey);
XVTDLL void xvt_dwin_draw_icon(WINDOW win, int x, int y, int rid);
XVTDLL void xvt_dwin_draw_gradient_circular(WINDOW win, const RCT* r, COLOR col1, COLOR col2, const PNT* center); // Added by AGA
XVTDLL void xvt_dwin_draw_gradient_linear(WINDOW win, const RCT* r, COLOR col1, COLOR col2, int angle); // Added by AGA
XVTDLL void xvt_dwin_draw_image_on_pdf(WINDOW win, const char* name, RCT* dest); // Added by AGA
XVTDLL void xvt_dwin_draw_image(WINDOW win, XVT_IMAGE image, RCT* dest, RCT* source);
XVTDLL void xvt_dwin_draw_oval(WINDOW Win, const RCT* r);
@ -262,6 +264,7 @@ XVTDLL void xvt_rect_offset(RCT *rctp, short dh, short dv);
XVTDLL void xvt_rect_set(RCT *rctp, short left, short top, short right, short bottom);
XVTDLL void xvt_rect_set_empty(RCT *rctp);
XVTDLL BOOLEAN xvt_rect_set_pos(RCT *rctp, PNT pos);
XVTDLL void xvt_rect_inflate(RCT *rctp, short ix, short iy);
XVTDLL void xvt_res_free_menu_tree(MENU_ITEM* tree);
XVTDLL XVT_IMAGE xvt_res_get_image(int rid);

View File

@ -450,12 +450,11 @@ CB_PICT, /* encapsulated picture */
CB_APPL /* app's own (must have name) */
} CB_FORMAT;
typedef struct s_xvt_config {
short menu_bar_ID; /* task menubar ResID */
short about_box_ID; /* default aboutbox ResID */
char *base_appl_name; /* application's "filename" */
char *appl_name; /* application's name */
char *taskwin_title; /* title for task window */
typedef struct s_xvt_config
{
short menu_bar_ID; /* task menubar ResID */
short about_box_ID; /* default aboutbox ResID */
const char* base_appl_name; /* application's "filename" */
const char* appl_name; /* application's name */
const char* taskwin_title; /* title for task window */
} XVT_CONFIG;