MPQC
2.3.1
src
lib
util
render
object.h
1
//
2
// object.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_object_h
29
#define _util_render_object_h
30
31
#ifdef __GNUC__
32
#pragma interface
33
#endif
34
35
#include <iostream>
36
37
#include <util/keyval/keyval.h>
38
#include <util/render/material.h>
39
#include <util/render/appearance.h>
40
#include <util/render/transform.h>
41
42
namespace
sc {
43
44
class
Render;
45
46
class
RenderedObject
:
public
DescribedClass
{
47
protected
:
48
char
* name_;
49
Ref<Material>
material_;
50
Ref<Appearance>
appearance_;
51
Ref<Transform>
transform_;
52
53
friend
class
Render
;
54
public
:
55
RenderedObject
(
const
Ref<Material>
& = 0);
56
RenderedObject
(
const
Ref<KeyVal>
&);
57
~
RenderedObject
();
58
const
char
* name()
const
{
return
name_; }
59
void
set_name(
const
char
*);
60
Ref<Material>
material()
const
{
return
material_; }
61
Ref<Appearance>
appearance()
const
{
return
appearance_; }
62
Ref<Transform>
transform()
const
{
return
transform_; }
63
void
material(
const
Ref<Material>
&m) { material_ = m; }
64
void
appearance(
const
Ref<Appearance>
&a) { appearance_ = a; }
65
void
transform(
const
Ref<Transform>
&t) { transform_ = t; }
66
67
virtual
void
print
(std::ostream& =
ExEnv::out0
())
const
;
68
69
// to be called only by derivatives of Render
70
virtual
void
render(
const
Ref<Render>
&) = 0;
71
};
72
73
74
class
RenderedObjectSet
:
public
RenderedObject
{
75
private
:
76
int
capacity_;
77
int
n_;
78
Ref<RenderedObject>
*array_;
79
protected
:
80
void
render(
const
Ref<Render>
&);
81
public
:
82
RenderedObjectSet
(
int
capacity = 10);
83
RenderedObjectSet
(
const
Ref<KeyVal>
&);
84
~
RenderedObjectSet
();
85
int
n()
const
{
return
n_; }
86
const
Ref<RenderedObject>
& element(
int
i)
const
{
return
array_[i]; }
87
virtual
void
add(
const
Ref<RenderedObject>
&);
88
};
89
90
}
91
92
#endif
93
94
// Local Variables:
95
// mode: c++
96
// c-file-style: "CLJ"
97
// End:
sc::RenderedObjectSet
Definition:
object.h:74
sc::Ref
A template class that maintains references counts.
Definition:
ref.h:332
sc::RenderedObject
Definition:
object.h:46
sc::RenderedObject::print
virtual void print(std::ostream &=ExEnv::out0()) const
Print the object.
sc::Render
Definition:
render.h:50
sc::DescribedClass
Classes which need runtime information about themselves and their relationship to other classes can v...
Definition:
class.h:244
sc::ExEnv::out0
static std::ostream & out0()
Return an ostream that writes from node 0.
Generated at Sun Jan 26 2020 23:33:04 for
MPQC
2.3.1 using the documentation package
Doxygen
1.8.16.