cerr << "width " << width << ", height " << height << endl; cerr << width << " " << height << endl; cerr << (double) width / height << endl; gluPerspective(30, (double)width / height, 0.1, 10); gluPerspective(30, (double)width / height, 0.1, 10); glTranslated(0, 0, -2); glRotated(30, 4, 5, 6); glScaled(200, 200, 200); glutWireTeapot(200); // glutTimerFunc(func, int_value); glutIdleFunc(idle_func); // _fn_ -------------------------------------------------------------- class Fn { public: virtual int operator()() = 0; virtual ~Fn() = 0; }; inline Fn::~Fn() {} template class Fn1 { public: virtual int operator()(T a0) = 0; virtual ~Fn1() = 0; }; template inline Fn1::~Fn1() {} // -------------------------------------------------------------------- class AMPS { public: AMPS() { } ~AMPS() { } }; template using Member1 = void (Object::*)(A0); template using Member1r = R (Object::*)(A0); // -growvec----------------------------------------------------------- template class growvec : vector { void operator[](int i, T& val) { if (size() <= i) resize(i+1); // vector::this->[i] = val; } } // _generic_ --------------------------------------------------------- // base object class - not needed? class Object { public: virtual ~Object() = 0; }; inline Object::~Object() {} // plugs typedef void (Object::*Plug)(); typedef void (Object::*Plug_i)(int); typedef int (Object::*i_Plug_i)(int); // (plug, value) pairs, for callbacks typedef pair PlugV_i; typedef pair i_PlugV_i; //long long unique = 1; // //long long get_unique() { // //} // AMPS::Editor *e = static_cast(windows[window]); // e->display(); // windows[window]->display(); // dynamic_cast(windows[window])->animate();