ButcherView::ButcherView(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name) : wxControl(parent, id, pos, size, style, wxDefaultValidator, name), selection_(NULL), filealternate_(false), filealternateid_(-1) { dwindow_=new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize); dwindow_->SetScrollRate( 10, 10 ); wxASSERT_MSG(wxEVT_SCROLLWIN_TOP<=wxEVT_SCROLLWIN_THUMBRELEASE, _("Logic error in scrollwin events")); for (int i=wxEVT_SCROLLWIN_TOP; i<=wxEVT_SCROLLWIN_THUMBRELEASE; i++) { dwindow_->Connect(wxID_ANY, i, wxScrollWinEventHandler(ButcherView::OnDWindowWinScroll), NULL, this); } //dwindow_->Connect(wxID_ANY, wxEVT_LEAVE_WINDOW, wxMouseEventHandler(ButcherViewEditor::OnDWindowLeave), NULL, this); ruler_left_=new ButcherRuler(this, ButcherRuler::BRK_LEFT);//, wxID_ANY, wxDefaultPosition, wxSize(rulersize_, -1)); ruler_top_=new ButcherRuler(this, ButcherRuler::BRK_TOP);//, wxID_ANY, wxDefaultPosition, wxSize(-1, rulersize_)); ruler_right_=new ButcherRuler(this, ButcherRuler::BRK_RIGHT);//, wxID_ANY, wxDefaultPosition, wxSize(rulersize_, -1)); ruler_bottom_=new ButcherRuler(this, ButcherRuler::BRK_BOTTOM);//, wxID_ANY, wxDefaultPosition, wxSize(-1, rulersize_)); designer_ = new ButcherDocument(this, dwindow_/*, wxID_ANY, wxPoint(rulersize_, rulersize_), wxSize(designwidth_, designheight_)*/); //designer_->SetBackgroundColour(*wxGREEN); RepositionView(); SetCursor(*wxCROSS_CURSOR); }
void ButcherView::OnSize(wxSizeEvent &event) { RepositionView(); event.Skip(); }
bool ObjectView::SpinIt() { bool changed = false; if (fGouraud != fLastGouraud) { LockGL(); glShadeModel(fGouraud ? GL_SMOOTH : GL_FLAT); UnlockGL(); fLastGouraud = fGouraud; changed = true; } if (fZbuf != fLastZbuf) { LockGL(); if (fZbuf) glEnable(GL_DEPTH_TEST); else glDisable(GL_DEPTH_TEST); UnlockGL(); fLastZbuf = fZbuf; changed = true; } if (fCulling != fLastCulling) { LockGL(); if (fCulling) glEnable(GL_CULL_FACE); else glDisable(GL_CULL_FACE); UnlockGL(); fLastCulling = fCulling; changed = true; } if (fLighting != fLastLighting) { LockGL(); if (fLighting) glEnable(GL_LIGHTING); else glDisable(GL_LIGHTING); UnlockGL(); fLastLighting = fLighting; changed = true; } if (fFilled != fLastFilled) { LockGL(); if (fFilled) { glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); } else { glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); } UnlockGL(); fLastFilled = fFilled; changed = true; } if (fFog != fLastFog) { if (fFog) { glFogf(GL_FOG_START, 1.0); glFogf(GL_FOG_DENSITY, 0.2); glFogf(GL_FOG_END, depthOfView); glFogfv(GL_FOG_COLOR, foggy); glEnable(GL_FOG); bgColor = foggy; glClearColor(bgColor[0], bgColor[1], bgColor[2], 1.0); } else { glDisable(GL_FOG); bgColor = black; glClearColor(bgColor[0], bgColor[1], bgColor[2], 1.0); } fLastFog = fFog; changed = true; } changed = changed || RepositionView(); changed = changed || fForceRedraw; fForceRedraw = false; for (int i = 0; i < fObjects.CountItems(); i++) { bool hack = reinterpret_cast<GLObject*>(fObjects.ItemAt(i))->SpinIt(); changed = changed || hack; } return changed; }