/* * * $Id$ * * This file is part of the Virtual Leaf. * * VirtualLeaf is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * VirtualLeaf is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the Virtual Leaf. If not, see . * * Copyright 2010 Roeland Merks. * */ #ifndef _MAINBASE_H_ #define _MAINBASE_H_ #include #include #include #include #include #include #include #include #include "mesh.h" #include "warning.h" using namespace std; /*! Implement these functions in your main application */ class MainBase { public: MainBase(QGraphicsScene &c, Mesh &m) : mesh(m), canvas(c) { // Standard options for batch version showcentersp = false; showmeshp = false; showbordercellp = false; shownodenumbersp = false; showcellnumbersp = false; showcellsaxesp = false; showcellstrainp = false; movieframesp = true; showboundaryonlyp = false; showwallsp = false; showfluxesp = false; dynamicscellsp = true; showtooltipsp = false; hidecellsp = false; } virtual ~MainBase() {}; virtual double TimeStep(); virtual void Init(const char *leaffile=0); virtual bool ShowCentersP(void) {return showcentersp;} virtual bool ShowMeshP(void) {return showmeshp; } virtual bool ShowBorderCellsP(void) {return showbordercellp; } virtual bool PausedP(void) {return false; } virtual bool ShowNodeNumbersP(void) {return shownodenumbersp; } virtual bool ShowCellNumbersP(void) {return showcellnumbersp;} virtual bool ShowCellAxesP(void) {return showcellsaxesp;} virtual bool ShowCellStrainP(void) {return showcellstrainp;} virtual bool MovieFramesP(void) {return movieframesp;} virtual bool ShowBoundaryOnlyP(void) {return showboundaryonlyp;} virtual bool ShowToolTipsP(void) {return showtooltipsp;} virtual bool ShowWallsP(void) {return showwallsp;} // virtual bool ShowApoplastsP(void) { return showapoplastsp;} virtual bool ShowFluxesP(void) { return showfluxesp; } virtual bool DynamicCellsP(void) { return dynamicscellsp; } virtual void FitCanvasToWindow() {}; virtual void FitLeafToCanvas() {}; virtual bool HideCellsP(void) { return hidecellsp; } virtual void clear(void) { QList list = canvas.items(); QList::Iterator it = list.begin(); for (; it != list.end(); ++it) { if ( *it ) delete *it; } }; virtual void XMLReadSettings(xmlNode *settings); virtual void XMLReadViewport(xmlNode *viewport); virtual double getFluxArrowsize(void) { return 10.;} int Save(const char *fname, const char *format, int sizex=640, int sizey=480); void CutSAM(void); void Plot(int resize_stride=10); virtual void UserMessage(QString message, int timeout = 0) { cerr << message.toAscii().constData() << endl; } Mesh &mesh; QTransform viewport; protected: QGraphicsScene &canvas; virtual xmlNode *XMLSettingsTree(void) const; virtual xmlNode *XMLViewportTree(QTransform &transform) const; protected: bool showcentersp; bool showmeshp; bool showbordercellp; bool shownodenumbersp; bool showcellnumbersp; bool showcellsaxesp; bool showcellstrainp; bool movieframesp; bool showboundaryonlyp; bool showwallsp; // bool showapoplastsp; bool showfluxesp; bool dynamicscellsp; bool showtooltipsp; bool hidecellsp; }; //#include #define TIMESTEP double MainBase::TimeStep(void) #define INIT void MainBase::Init(const char *leaffile) #endif /* finis */