From: Gilles Depeyrot Date: Sun, 4 Feb 2001 20:11:49 +0000 (+0000) Subject: corrections for event handling changes in wxWindows X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/764835a5d5b72c635527bfbb350d190c89381b44 corrections for event handling changes in wxWindows renamed Cell and CellBox to LifeCell and LifeCellBox to avoid conflict with Classic Mac OS Toolbox type git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9297 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/demos/life/dialogs.cpp b/demos/life/dialogs.cpp index 98b1cc21b6..70e6a34716 100644 --- a/demos/life/dialogs.cpp +++ b/demos/life/dialogs.cpp @@ -40,7 +40,7 @@ // resources // -------------------------------------------------------------------------- -#if defined(__WXGTK__) || defined(__WXMOTIF__) +#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) // logo for the about dialog #include "bitmaps/life.xpm" #endif diff --git a/demos/life/game.cpp b/demos/life/game.cpp index 46264b5238..a356f550a1 100644 --- a/demos/life/game.cpp +++ b/demos/life/game.cpp @@ -54,7 +54,7 @@ #define CELLBOX 8 // cells in a cellbox (do not change!) -class CellBox +class LifeCellBox { public: // members @@ -62,21 +62,21 @@ public: inline bool SetCell(int dx, int dy, bool alive); // attributes - wxInt32 m_x, m_y; // position in universe - wxUint32 m_live1, m_live2; // alive cells (1 bit per cell) - wxUint32 m_old1, m_old2; // old values for m_live1, 2 - wxUint32 m_on[8]; // neighbouring info - wxUint32 m_dead; // been dead for n generations - CellBox *m_up, *m_dn, *m_lf, *m_rt; // neighbour CellBoxes - CellBox *m_prev, *m_next; // in linked list - CellBox *m_hprev, *m_hnext; // in hash table + wxInt32 m_x, m_y; // position in universe + wxUint32 m_live1, m_live2; // alive cells (1 bit per cell) + wxUint32 m_old1, m_old2; // old values for m_live1, 2 + wxUint32 m_on[8]; // neighbouring info + wxUint32 m_dead; // been dead for n generations + LifeCellBox *m_up, *m_dn, *m_lf, *m_rt; // neighbour CellBoxes + LifeCellBox *m_prev, *m_next; // in linked list + LifeCellBox *m_hprev, *m_hnext; // in hash table }; // IsAlive: // Returns whether cell dx, dy in this box is alive // -bool CellBox::IsAlive(int dx, int dy) const +bool LifeCellBox::IsAlive(int dx, int dy) const { if (dy > 3) return (m_live2 & 1 << ((dy - 4) * 8 + dx)); @@ -88,7 +88,7 @@ bool CellBox::IsAlive(int dx, int dy) const // Sets cell dx, dy in this box to 'alive', returns TRUE if // the previous value was different, FALSE if it was the same. // -bool CellBox::SetCell(int dx, int dy, bool alive) +bool LifeCellBox::SetCell(int dx, int dy, bool alive) { if (IsAlive(dx, dy) != alive) { @@ -124,14 +124,14 @@ Life::Life() // pattern data m_numcells = 0; - m_boxes = new CellBox *[HASHSIZE]; + m_boxes = new LifeCellBox *[HASHSIZE]; m_head = NULL; m_available = NULL; for (int i = 0; i < HASHSIZE; i++) m_boxes[i] = NULL; // state vars for BeginFind & FindMore - m_cells = new Cell[ARRAYSIZE]; + m_cells = new LifeCell[ARRAYSIZE]; m_ncells = 0; m_findmore = FALSE; m_changed = FALSE; @@ -150,7 +150,7 @@ Life::~Life() // void Life::Clear() { - CellBox *c, *nc; + LifeCellBox *c, *nc; // clear the hash table pointers for (int i = 0; i < HASHSIZE; i++) @@ -192,7 +192,7 @@ void Life::Clear() // bool Life::IsAlive(wxInt32 x, wxInt32 y) { - CellBox *c = LinkBox(x, y, FALSE); + LifeCellBox *c = LinkBox(x, y, FALSE); return (c && c->IsAlive( x - c->m_x, y - c->m_y )); } @@ -202,7 +202,7 @@ bool Life::IsAlive(wxInt32 x, wxInt32 y) // void Life::SetCell(wxInt32 x, wxInt32 y, bool alive) { - CellBox *c = LinkBox(x, y); + LifeCellBox *c = LinkBox(x, y); wxUint32 dx = x - c->m_x; wxUint32 dy = y - c->m_y; @@ -257,15 +257,15 @@ void Life::SetPattern(const LifePattern& pattern) // Creates a box in x, y, either taking it from the list // of available boxes, or allocating a new one. // -CellBox* Life::CreateBox(wxInt32 x, wxInt32 y, wxUint32 hv) +LifeCellBox* Life::CreateBox(wxInt32 x, wxInt32 y, wxUint32 hv) { - CellBox *c; + LifeCellBox *c; // if there are no available boxes, alloc a few more if (!m_available) for (int i = 1; i <= ALLOCBOXES; i++) { - c = new CellBox(); + c = new LifeCellBox(); if (!c) { @@ -289,7 +289,7 @@ CellBox* Life::CreateBox(wxInt32 x, wxInt32 y, wxUint32 hv) m_available = c->m_next; // reset everything - memset((void *) c, 0, sizeof(CellBox)); + memset((void *) c, 0, sizeof(LifeCellBox)); c->m_x = x; c->m_y = y; @@ -311,10 +311,10 @@ CellBox* Life::CreateBox(wxInt32 x, wxInt32 y, wxUint32 hv) // it returns NULL or creates a new one, depending on the value // of the 'create' parameter. // -CellBox* Life::LinkBox(wxInt32 x, wxInt32 y, bool create) +LifeCellBox* Life::LinkBox(wxInt32 x, wxInt32 y, bool create) { wxUint32 hv; - CellBox *c; + LifeCellBox *c; x &= 0xfffffff8; y &= 0xfffffff8; @@ -325,14 +325,14 @@ CellBox* Life::LinkBox(wxInt32 x, wxInt32 y, bool create) if ((c->m_x == x) && (c->m_y == y)) return c; // if not found, and (create == TRUE), create a new one - return create? CreateBox(x, y, hv) : (CellBox*) NULL; + return create? CreateBox(x, y, hv) : (LifeCellBox*) NULL; } // KillBox: // Removes this box from the list and the hash table and // puts it in the list of available boxes. // -void Life::KillBox(CellBox *c) +void Life::KillBox(LifeCellBox *c) { wxUint32 hv = HASH(c->m_x, c->m_y); @@ -365,7 +365,7 @@ void Life::KillBox(CellBox *c) // Navigation // -------------------------------------------------------------------------- -Cell Life::FindCenter() +LifeCell Life::FindCenter() { double sx, sy; int n; @@ -373,7 +373,7 @@ Cell Life::FindCenter() sy = 0.0; n = 0; - CellBox *c; + LifeCellBox *c; for (c = m_head; c; c = c->m_next) if (!c->m_dead) { @@ -388,18 +388,18 @@ Cell Life::FindCenter() sy = (sy / n) + CELLBOX / 2; } - Cell cell; + LifeCell cell; cell.i = (wxInt32) sx; cell.j = (wxInt32) sy; return cell; } -Cell Life::FindNorth() +LifeCell Life::FindNorth() { wxInt32 x = 0, y = 0; bool first = TRUE; - CellBox *c; + LifeCellBox *c; for (c = m_head; c; c = c->m_next) if (!c->m_dead && ((first) || (c->m_y < y))) { @@ -408,18 +408,18 @@ Cell Life::FindNorth() first = FALSE; } - Cell cell; + LifeCell cell; cell.i = first? 0 : x + CELLBOX / 2; cell.j = first? 0 : y + CELLBOX / 2; return cell; } -Cell Life::FindSouth() +LifeCell Life::FindSouth() { wxInt32 x = 0, y = 0; bool first = TRUE; - CellBox *c; + LifeCellBox *c; for (c = m_head; c; c = c->m_next) if (!c->m_dead && ((first) || (c->m_y > y))) { @@ -428,18 +428,18 @@ Cell Life::FindSouth() first = FALSE; } - Cell cell; + LifeCell cell; cell.i = first? 0 : x + CELLBOX / 2; cell.j = first? 0 : y + CELLBOX / 2; return cell; } -Cell Life::FindWest() +LifeCell Life::FindWest() { wxInt32 x = 0, y = 0; bool first = TRUE; - CellBox *c; + LifeCellBox *c; for (c = m_head; c; c = c->m_next) if (!c->m_dead && ((first) || (c->m_x < x))) { @@ -448,18 +448,18 @@ Cell Life::FindWest() first = FALSE; } - Cell cell; + LifeCell cell; cell.i = first? 0 : x + CELLBOX / 2; cell.j = first? 0 : y + CELLBOX / 2; return cell; } -Cell Life::FindEast() +LifeCell Life::FindEast() { wxInt32 x = 0, y = 0; bool first = TRUE; - CellBox *c; + LifeCellBox *c; for (c = m_head; c; c = c->m_next) if (!c->m_dead && ((first) || (c->m_x > x))) { @@ -468,7 +468,7 @@ Cell Life::FindEast() first = FALSE; } - Cell cell; + LifeCell cell; cell.i = first? 0 : x + CELLBOX / 2; cell.j = first? 0 : y + CELLBOX / 2; return cell; @@ -517,9 +517,9 @@ void Life::BeginFind(wxInt32 x0, wxInt32 y0, wxInt32 x1, wxInt32 y1, bool change m_changed = changed; } -bool Life::FindMore(Cell *cells[], size_t *ncells) +bool Life::FindMore(LifeCell *cells[], size_t *ncells) { - CellBox *c; + LifeCellBox *c; *cells = m_cells; m_ncells = 0; @@ -592,7 +592,7 @@ extern int g_tab2[]; // bool Life::NextTic() { - CellBox *c, *up, *dn, *lf, *rt; + LifeCellBox *c, *up, *dn, *lf, *rt; wxUint32 t1, t2, t3, t4; bool changed = FALSE; @@ -896,7 +896,7 @@ bool Life::NextTic() } else { - CellBox *aux = c->m_next; + LifeCellBox *aux = c->m_next; if (c->m_dead++ > MAXDEAD) KillBox(c); diff --git a/demos/life/game.h b/demos/life/game.h index cca12fae4b..1366c18fec 100644 --- a/demos/life/game.h +++ b/demos/life/game.h @@ -75,14 +75,14 @@ public: // -------------------------------------------------------------------------- // A struct used to pass cell coordinates around -struct Cell +struct LifeCell { wxInt32 i; wxInt32 j; }; // A private class that contains data about a block of cells -class CellBox; +class LifeCellBox; // A class that models a Life game instance class Life @@ -105,11 +105,11 @@ public: bool NextTic(); // navigation - Cell FindNorth(); - Cell FindSouth(); - Cell FindWest(); - Cell FindEast(); - Cell FindCenter(); + LifeCell FindNorth(); + LifeCell FindSouth(); + LifeCell FindWest(); + LifeCell FindEast(); + LifeCell FindCenter(); // The following functions find cells within a given viewport; either // all alive cells, or only those cells which have changed since last @@ -132,13 +132,13 @@ public: void BeginFind(wxInt32 x0, wxInt32 y0, wxInt32 x1, wxInt32 y1, bool changed); - bool FindMore(Cell *cells[], size_t *ncells); + bool FindMore(LifeCell *cells[], size_t *ncells); private: // cellbox-related - CellBox *CreateBox(wxInt32 x, wxInt32 y, wxUint32 hv); - CellBox *LinkBox(wxInt32 x, wxInt32 y, bool create = TRUE); - void KillBox(CellBox *c); + LifeCellBox *CreateBox(wxInt32 x, wxInt32 y, wxUint32 hv); + LifeCellBox *LinkBox(wxInt32 x, wxInt32 y, bool create = TRUE); + void KillBox(LifeCellBox *c); // helper for BeginFind & FindMore void DoLine(wxInt32 x, wxInt32 y, wxUint32 alive, wxUint32 old = 0); @@ -150,13 +150,13 @@ private: wxString m_description; // description // pattern data - CellBox *m_head; // list of alive boxes - CellBox *m_available; // list of reusable dead boxes - CellBox **m_boxes; // hash table of alive boxes + LifeCellBox *m_head; // list of alive boxes + LifeCellBox *m_available; // list of reusable dead boxes + LifeCellBox **m_boxes; // hash table of alive boxes wxUint32 m_numcells; // population (number of alive cells) // state vars for BeginFind & FindMore - Cell *m_cells; // array of cells + LifeCell *m_cells; // array of cells size_t m_ncells; // number of valid entries in m_cells wxInt32 m_x, m_y, // counters and search mode m_x0, m_y0, diff --git a/demos/life/life.cpp b/demos/life/life.cpp index f01e3e0be7..f4f80eac16 100644 --- a/demos/life/life.cpp +++ b/demos/life/life.cpp @@ -41,7 +41,7 @@ // resources // -------------------------------------------------------------------------- -#if defined(__WXGTK__) || defined(__WXMOTIF__) +#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) // application icon #include "mondrian.xpm" @@ -503,7 +503,7 @@ void LifeFrame::OnZoom(wxCommandEvent& event) void LifeFrame::OnNavigate(wxCommandEvent& event) { - Cell c; + LifeCell c; switch (event.GetId()) { @@ -772,7 +772,7 @@ void LifeCanvas::DrawChanged() wxClientDC dc(this); size_t ncells; - Cell *cells; + LifeCell *cells; bool done = FALSE; m_life->BeginFind(m_viewportX, @@ -824,7 +824,7 @@ void LifeCanvas::OnPaint(wxPaintEvent& event) j1 = YToCell(y + h - 1); size_t ncells; - Cell *cells; + LifeCell *cells; bool done = FALSE; m_life->BeginFind(i0, j0, i1, j1, FALSE); @@ -1021,48 +1021,61 @@ void LifeCanvas::OnScroll(wxScrollWinEvent& event) // calculate scroll increment int scrollinc = 0; - switch (type) + if (type == wxEVT_SCROLLWIN_TOP) { - case wxEVT_SCROLLWIN_TOP: - { - if (orient == wxHORIZONTAL) - scrollinc = -m_viewportW; - else - scrollinc = -m_viewportH; - break; - } - case wxEVT_SCROLLWIN_BOTTOM: - { - if (orient == wxHORIZONTAL) - scrollinc = m_viewportW; - else - scrollinc = m_viewportH; - break; - } - case wxEVT_SCROLLWIN_LINEUP: scrollinc = -1; break; - case wxEVT_SCROLLWIN_LINEDOWN: scrollinc = +1; break; - case wxEVT_SCROLLWIN_PAGEUP: scrollinc = -10; break; - case wxEVT_SCROLLWIN_PAGEDOWN: scrollinc = +10; break; - case wxEVT_SCROLLWIN_THUMBTRACK: + if (orient == wxHORIZONTAL) + scrollinc = -m_viewportW; + else + scrollinc = -m_viewportH; + } + else + if (type == wxEVT_SCROLLWIN_BOTTOM) + { + if (orient == wxHORIZONTAL) + scrollinc = m_viewportW; + else + scrollinc = m_viewportH; + } + else + if (type == wxEVT_SCROLLWIN_LINEUP) + { + scrollinc = -1; + } + else + if (type == wxEVT_SCROLLWIN_LINEDOWN) + { + scrollinc = +1; + } + else + if (type == wxEVT_SCROLLWIN_PAGEUP) + { + scrollinc = -10; + } + else + if (type == wxEVT_SCROLLWIN_PAGEDOWN) + { + scrollinc = -10; + } + else + if (type == wxEVT_SCROLLWIN_THUMBTRACK) + { + if (orient == wxHORIZONTAL) { - if (orient == wxHORIZONTAL) - { - scrollinc = pos - m_thumbX; - m_thumbX = pos; - } - else - { - scrollinc = pos - m_thumbY; - m_thumbY = pos; - } - break; + scrollinc = pos - m_thumbX; + m_thumbX = pos; } - case wxEVT_SCROLLWIN_THUMBRELEASE: + else { - m_thumbX = m_viewportW; - m_thumbY = m_viewportH; + scrollinc = pos - m_thumbY; + m_thumbY = pos; } } + else + if (type == wxEVT_SCROLLWIN_THUMBRELEASE) + { + m_thumbX = m_viewportW; + m_thumbY = m_viewportH; + } #if defined(__WXGTK__) || defined(__WXMOTIF__) // wxGTK and wxMotif update the thumb automatically (wxMSW doesn't);