// // render.h // // Copyright (C) 1996 Limit Point Systems, Inc. // // Author: Curtis Janssen // Maintainer: LPS // // This file is part of the SC Toolkit. // // The SC Toolkit is free software; you can redistribute it and/or modify // it under the terms of the GNU Library General Public License as published by // the Free Software Foundation; either version 2, or (at your option) // any later version. // // The SC Toolkit 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 Library General Public License for more details. // // You should have received a copy of the GNU Library General Public License // along with the SC Toolkit; see the file COPYING.LIB. If not, write to // the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. // // The U.S. Government is granted a limited license as per AL 91-7. // #ifdef __GNUC__ #pragma interface #endif #ifndef _util_render_render_h #define _util_render_render_h #include #include #include #include #include namespace sc { class RenderedObject; class AnimatedObject; class RenderedObjectSet; class RenderedSphere; class RenderedPolygons; class RenderedPolylines; class Render: public DescribedClass { protected: Ref default_material_; Ref default_appearance_; Ref default_transform_; Stack material_stack_; Stack appearance_stack_; Stack transform_stack_; virtual void push_material(const Ref& m); virtual void push_appearance(const Ref& a); virtual void push_transform(const Ref& t); virtual Ref pop_material(); virtual Ref pop_appearance(); virtual Ref pop_transform(); public: Render(); Render(const Ref&); virtual ~Render(); Ref default_material() { return default_material_; } Ref default_appearance() { return default_appearance_; } Ref default_transform() { return default_transform_; } void default_material(const Ref& m) { default_material_ = m; } void default_appearance(const Ref& a) {default_appearance_ = a;} void default_transform(const Ref& t) {default_transform_ = t;} virtual void clear() = 0; virtual void render(const Ref&); virtual void animate(const Ref &); virtual void set(const Ref&); virtual void sphere(const Ref&); virtual void polygons(const Ref&) = 0; virtual void polylines(const Ref&) = 0; }; class FileRender: public Render { protected: char* filename_; char* basename_; std::streambuf *sbuf_; int delete_sbuf_; int depth_; char *get_filename(const char *objectname); void open_sbuf(const char *objectname); void close_sbuf(); public: FileRender(const char * filename); FileRender(std::ostream &o = ExEnv::out0()); FileRender(const Ref&); virtual ~FileRender(); void clear(); virtual void set_filename(const char *name); virtual void set_basename(const char *name); virtual const char *file_extension(); }; } #endif // Local Variables: // mode: c++ // c-file-style: "CLJ" // End: