Patch level : 10.0

Files correlati     : xvaga.dll
Ricompilazione Demo : [ ]
Commento            :
Rese simmetriche chiamate di conversione rettangoli


git-svn-id: svn://10.65.10.50/trunk@19941 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2010-01-19 08:23:55 +00:00
parent 897b6eeff6
commit ff8bbf8905
5 changed files with 35 additions and 40 deletions

View File

@ -782,7 +782,7 @@ void xvt_dwin_draw_arc(WINDOW win, const RCT* r, int sx, int sy, int ex, int ey)
if (win != NULL_WIN && r != NULL)
{
CAST_DC(win, dc);
const wxRect rect = NormalizeRCT(r);
const wxRect rect = RCT2Rect(r);
const wxPoint c(rect.x+rect.width/2, rect.y+rect.height/2);
if (abs(rect.width - rect.height) < 2)
dc.DrawArc(sx, sy, ex, ey, c.x, c.y);
@ -801,7 +801,7 @@ void xvt_dwin_draw_gradient_circular(WINDOW win, const RCT* r, COLOR col1, COLOR
if (win != NULL_WIN && r != NULL)
{
CAST_DC(win, dc);
const wxRect rect = NormalizeRCT(r);
const wxRect rect = RCT2Rect(r);
CAST_COLOR(col1, color1);
CAST_COLOR(col2, color2);
@ -817,7 +817,7 @@ void xvt_dwin_draw_gradient_linear(WINDOW win, const RCT* r, COLOR col1, COLOR c
if (win != NULL_WIN && r != NULL)
{
CAST_DC(win, dc);
const wxRect rect = NormalizeRCT(r);
const wxRect rect = RCT2Rect(r);
CAST_COLOR(col1, color1);
CAST_COLOR(col2, color2);
@ -919,8 +919,8 @@ void xvt_dwin_draw_image(WINDOW win, XVT_IMAGE img, const RCT* dest, const RCT*
if (image != NULL)
{
CAST_DC(win, dc);
const wxRect src = NormalizeRCT(source);
const wxRect dst = NormalizeRCT(dest);
const wxRect src = RCT2Rect(source);
const wxRect dst = RCT2Rect(dest);
DrawImageOnDC(dc, image, dst, src);
}
}
@ -928,7 +928,7 @@ void xvt_dwin_draw_image(WINDOW win, XVT_IMAGE img, const RCT* dest, const RCT*
void xvt_dwin_draw_oval(WINDOW win, const RCT* rctp)
{
CAST_DC(win, dc);
const wxRect rct = NormalizeRCT(rctp);
const wxRect rct = RCT2Rect(rctp);
dc.DrawEllipse(rct);
}
@ -964,14 +964,14 @@ void xvt_dwin_draw_polyline(WINDOW win, const PNT *lpnts, int npnts)
void xvt_dwin_draw_rect(WINDOW win, RCT *rctp)
{
CAST_DC(win, dc);
const wxRect rct = NormalizeRCT(rctp);
const wxRect rct = RCT2Rect(rctp);
dc.DrawRectangle(rct);
}
void xvt_dwin_draw_roundrect(WINDOW win, const RCT *rctp, int oval_width, int oval_height)
{
CAST_DC(win, dc);
const wxRect rct = NormalizeRCT(rctp);
const wxRect rct = RCT2Rect(rctp);
dc.DrawRoundedRectangle(rct, min(oval_width, oval_height));
}
@ -1040,7 +1040,7 @@ void xvt_dwin_draw_text(WINDOW win, int x, int y, const char *s, int len)
wxBrush* brush = wxTheBrushList->FindOrCreateBrush(brush_color, wxSOLID);
const wxBrush & old_brush = dc.GetBrush();
const wxPen & old_pen = dc.GetPen();
const wxRect rct = NormalizeRCT(&back);
const wxRect rct = RCT2Rect(&back);
dc.SetBrush(*brush);
dc.SetPen(*wxTRANSPARENT_PEN);
@ -1126,7 +1126,7 @@ void xvt_dwin_invalidate_rect(WINDOW win, const RCT* rctp)
CAST_WIN(win, w);
if (rctp != NULL)
{
const wxRect rct = NormalizeRCT(rctp);
const wxRect rct = RCT2Rect(rctp);
w.Refresh(false, &rct);
}
else
@ -1141,7 +1141,7 @@ BOOLEAN xvt_dwin_is_update_needed(WINDOW win, const RCT* rctp)
if (win == PRINTER_WIN || win == SCREEN_WIN)
return TRUE;
CAST_WIN(win, w); // child windows and TASK_WIN
const wxRect rect1 = NormalizeRCT(rctp);
const wxRect rect1 = RCT2Rect(rctp);
const wxRect rect2 = w.GetUpdateClientRect();
return rect1.Intersects(rect2);
}
@ -1155,7 +1155,7 @@ void xvt_dwin_scroll_rect(WINDOW win, RCT *rctp, int dh, int dv)
CAST_WIN(win, w);
if (rctp != NULL)
{
const wxRect rct = NormalizeRCT(rctp);
const wxRect rct = RCT2Rect(rctp);
if (!rct.IsEmpty())
// w.ScrollWindow(dh, dv, &rct); // Metodo ortodosso ma impreciso di un pixel
w.Refresh(false, &rct); // Pezza "TEMPORANEA" per evitare artefatti
@ -1855,10 +1855,10 @@ XVT_IMAGE xvt_image_capture(WINDOW win, const RCT* src)
if (src == NULL)
{
RCT rct; xvt_vobj_get_client_rect(win, &rct);
r = NormalizeRCT(&rct);
r = RCT2Rect(&rct);
}
else
r = NormalizeRCT(src);
r = RCT2Rect(src);
wxBitmap bmp(r.GetWidth(), r.GetHeight());
CAST_DC(win, wdc);
@ -2100,8 +2100,8 @@ void xvt_image_transfer(XVT_IMAGE dstimage, XVT_IMAGE srcimage, RCT *dstrctp, RC
CAST_TIMAGE(srcimage, src);
if (dst != NULL && src != NULL)
{
const wxRect rctDst = NormalizeRCT(dstrctp);
const wxRect rctSrc = NormalizeRCT(srcrctp);
const wxRect rctDst = RCT2Rect(dstrctp);
const wxRect rctSrc = RCT2Rect(srcrctp);
wxMemoryDC dc;
wxBitmap bmp(*dst);
dc.SelectObject(bmp);
@ -2378,14 +2378,14 @@ int xvt_rect_get_width(const RCT *rctp)
BOOLEAN xvt_rect_has_point(const RCT *rctp, PNT pnt)
{
const wxRect rct = NormalizeRCT(rctp);
const wxRect rct = RCT2Rect(rctp);
return rct.Contains(pnt.h, pnt.v);
}
BOOLEAN xvt_rect_intersect(RCT *drctp, const RCT *rctp1, const RCT *rctp2)
{
const wxRect rect1 = NormalizeRCT(rctp1);
const wxRect rect2 = NormalizeRCT(rctp2);
const wxRect rect1 = RCT2Rect(rctp1);
const wxRect rect2 = RCT2Rect(rctp2);
const BOOLEAN yes = rect1.Intersects(rect2);
if (drctp)
{
@ -2398,7 +2398,7 @@ BOOLEAN xvt_rect_intersect(RCT *drctp, const RCT *rctp1, const RCT *rctp2)
drctp->bottom = min(rect1.GetBottom(), rect2.GetBottom())+1;
*/
const wxRect rect0 = rect1.Intersect(rect2);
NormalizeRect(rect0, drctp);
Rect2RCT(rect0, drctp);
}
else
{
@ -3819,7 +3819,7 @@ RCT* xvt_vobj_get_outer_rect(WINDOW win, RCT *rctp)
{
CAST_WIN(win, w);
const wxRect rct = w.GetRect();
NormalizeRect(rct, rctp);
Rect2RCT(rct, rctp);
}
}
else
@ -3910,7 +3910,7 @@ void xvt_vobj_minimize(WINDOW win)
void xvt_vobj_move(WINDOW win, const RCT* rctp)
{
CAST_WIN(win, w);
const wxRect rct = NormalizeRCT(rctp);
const wxRect rct = RCT2Rect(rctp);
w.Move(rct.x, rct.y);
w.SetClientSize(rct.width, rct.height);
}
@ -4012,7 +4012,7 @@ void xvt_vobj_translate_points(WINDOW from_win, WINDOW to_win, PNT *pntp, int np
WINDOW xvt_win_create(WIN_TYPE wtype, const RCT* rct_p, const char* title, int menu_rid, WINDOW parent, long win_flags, EVENT_MASK mask, EVENT_HANDLER eh, long app_data)
{
const wxRect rct = NormalizeRCT(rct_p);
const wxRect rct = RCT2Rect(rct_p);
const wxString caption = title;
long style = wxCLIP_SIBLINGS | wxCLIP_CHILDREN | wxWANTS_CHARS;

View File

@ -204,7 +204,7 @@ public:
WINDOW xvt_ctl_create_def(WIN_DEF* win_def_p, WINDOW parent_win, long app_data)
{
wxASSERT(win_def_p != NULL);
const wxRect rct = NormalizeRCT(&win_def_p->rct);
const wxRect rct = RCT2Rect(&win_def_p->rct);
wxWindow* pParent = wxStaticCast((wxObject*)parent_win, wxWindow);
const wxWindowID id = win_def_p->v.ctl.ctrl_id;

View File

@ -470,7 +470,7 @@ BOOLEAN xvt_dm_post_page_setup(PRINT_RCD* precp)
void xvt_dwin_draw_image_on_pdf(WINDOW win, const char* name, RCT* dest)
{
wxASSERT(win == PRINTER_WIN);
const wxRect dst = NormalizeRCT(dest);
const wxRect dst = RCT2Rect(dest);
TwxPDFDC& dc = *wxStaticCast(&GetTDCMapper().GetDC(win), TwxPDFDC);
dc.DrawImage(name, dst);
}

View File

@ -20,7 +20,7 @@ wxHashTable _nice_windows;
wxFrame* _task_win = NULL;
EVENT_HANDLER _task_win_handler = NULL;
wxRect NormalizeRCT(const RCT* prct)
wxRect RCT2Rect(const RCT* prct)
{
wxRect rct;
if (prct != NULL)
@ -33,13 +33,8 @@ wxRect NormalizeRCT(const RCT* prct)
return rct;
}
bool NormalizeRect(const wxRect& r, RCT* rct)
{
const bool ok = rct != NULL;
if (ok)
xvt_rect_set(rct, r.x, r.y, r.GetRight()+1, r.GetBottom()+1);
return ok;
}
void Rect2RCT(const wxRect& r, RCT* rct)
{ xvt_rect_set(rct, r.x, r.y, r.GetRight()+1, r.GetBottom()+1); }
///////////////////////////////////////////////////////////
// Caret emulation
@ -350,7 +345,7 @@ wxDC& TDC::GetDC(bool bPaint)
{
_dc->DestroyClippingRegion();
if (_clip.bottom < 4096)
_dc->SetClippingRegion(NormalizeRCT(&_clip));
_dc->SetClippingRegion(RCT2Rect(&_clip));
_real_clip = _clip;
}
@ -374,8 +369,8 @@ void TDC::SetClippingBox(const RCT* pRct)
{
if (pRct != NULL)
{
const wxRect rct = NormalizeRCT(pRct);
NormalizeRect(rct, &_clip);
const wxRect rct = RCT2Rect(pRct);
Rect2RCT(rct, &_clip);
}
else
{
@ -752,7 +747,7 @@ void TwxWindow::OnPaint(wxPaintEvent& WXUNUSED(evt))
const wxRect rctDamaged = GetUpdateRegion().GetBox();
XVT_EVENT e(E_UPDATE);
NormalizeRect(rctDamaged, &e.v.update.rct);
Rect2RCT(rctDamaged, &e.v.update.rct);
TDC& tdc = GetTDCMapper().GetTDC((WINDOW)this);
tdc.GetDC(true); // Forza la creazione di un wxPaintDC
@ -1025,7 +1020,7 @@ void TTaskWin::OnPaint(wxPaintEvent& WXUNUSED(evt))
const wxRect rctDamaged = GetUpdateRegion().GetBox();
XVT_EVENT e(E_UPDATE);
NormalizeRect(rctDamaged, &e.v.update.rct);
Rect2RCT(rctDamaged, &e.v.update.rct);
TDC& dc = GetTDCMapper().GetTDC((WINDOW)this);
dc.GetDC(true); // Forza la creazione di un wxPaintDC

View File

@ -239,8 +239,8 @@ const wxString& _GetAppTitle();
#define CAST_COLOR(xc, wc) wxColour wc((xc>>16)&0xFF, (xc>>8)&0xFF, xc&0xFF)
#define MAKE_XVT_COLOR(wc) XVT_MAKE_COLOR(wc.Red(), wc.Green(), wc.Blue())
wxRect NormalizeRCT(const RCT* prct);
bool NormalizeRect(const wxRect& rect, RCT* rct);
wxRect RCT2Rect(const RCT* prct);
void Rect2RCT(const wxRect& rect, RCT* rct);
#ifdef XVTWIN_CPP
#define extern