MPQC 3.0.0-alpha
Loading...
Searching...
No Matches
render.h
1//
2// render.h
3//
4// Copyright (C) 1996 Limit Point Systems, Inc.
5//
6// Author: Curtis Janssen <cljanss@limitpt.com>
7// Maintainer: LPS
8//
9// This file is part of the SC Toolkit.
10//
11// The SC Toolkit is free software; you can redistribute it and/or modify
12// it under the terms of the GNU Library General Public License as published by
13// the Free Software Foundation; either version 2, or (at your option)
14// any later version.
15//
16// The SC Toolkit is distributed in the hope that it will be useful,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19// GNU Library General Public License for more details.
20//
21// You should have received a copy of the GNU Library General Public License
22// along with the SC Toolkit; see the file COPYING.LIB. If not, write to
23// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24//
25// The U.S. Government is granted a limited license as per AL 91-7.
26//
27
28#ifndef _util_render_render_h
29#define _util_render_render_h
30
31#include <util/class/class.h>
32#include <util/render/appearance.h>
33#include <util/render/material.h>
34#include <util/render/transform.h>
35#include <util/render/stack.h>
36
37namespace sc {
38
39class RenderedObject;
40class AnimatedObject;
41class RenderedObjectSet;
42class RenderedSphere;
43class RenderedPolygons;
44class RenderedPolylines;
45
46class Render: public DescribedClass {
47 protected:
48 Ref<Material> default_material_;
49 Ref<Appearance> default_appearance_;
50 Ref<Transform> default_transform_;
51
52 Stack<Ref<Material> > material_stack_;
53 Stack<Ref<Appearance> > appearance_stack_;
54 Stack<Ref<Transform> > transform_stack_;
55
56 virtual void push_material(const Ref<Material>& m);
57 virtual void push_appearance(const Ref<Appearance>& a);
58 virtual void push_transform(const Ref<Transform>& t);
59 virtual Ref<Material> pop_material();
60 virtual Ref<Appearance> pop_appearance();
61 virtual Ref<Transform> pop_transform();
62
63 public:
64 Render();
65 Render(const Ref<KeyVal>&);
66 virtual ~Render();
67
68 Ref<Material> default_material() { return default_material_; }
69 Ref<Appearance> default_appearance() { return default_appearance_; }
70 Ref<Transform> default_transform() { return default_transform_; }
71 void default_material(const Ref<Material>& m) { default_material_ = m; }
72 void default_appearance(const Ref<Appearance>& a) {default_appearance_ = a;}
73 void default_transform(const Ref<Transform>& t) {default_transform_ = t;}
74
75 virtual void clear() = 0;
76
77 virtual void render(const Ref<RenderedObject>&);
78 virtual void animate(const Ref<AnimatedObject> &);
79
80 virtual void set(const Ref<RenderedObjectSet>&);
81 virtual void sphere(const Ref<RenderedSphere>&);
82 virtual void polygons(const Ref<RenderedPolygons>&) = 0;
83 virtual void polylines(const Ref<RenderedPolylines>&) = 0;
84};
85
86
87class FileRender: public Render {
88 protected:
89 char* filename_;
90 char* basename_;
91 std::streambuf *sbuf_;
92 int delete_sbuf_;
93 int depth_;
94
95 char *get_filename(const char *objectname);
96 void open_sbuf(const char *objectname);
97 void close_sbuf();
98 public:
99 FileRender(const char * filename);
100 FileRender(std::ostream &o = ExEnv::out0());
101 FileRender(const Ref<KeyVal>&);
102 virtual ~FileRender();
103
104 void clear();
105
106 virtual void set_filename(const char *name);
107 virtual void set_basename(const char *name);
108 virtual const char *file_extension();
109};
110
111}
112
113#endif
114
115// Local Variables:
116// mode: c++
117// c-file-style: "CLJ"
118// End:
Classes which need runtime information about themselves and their relationship to other classes can v...
Definition class.h:233
static std::ostream & out0()
Return an ostream that writes from node 0.
Definition render.h:87
A template class that maintains references counts.
Definition ref.h:361
Definition render.h:46
Definition stack.h:37
Contains all MPQC code up to version 3.
Definition mpqcin.h:14

Generated at Wed Sep 25 2024 02:45:31 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.12.0.