OpenStructure
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
stage
include
ost
gfx
map_slab.hh
Go to the documentation of this file.
1
//------------------------------------------------------------------------------
2
// This file is part of the OpenStructure project <www.openstructure.org>
3
//
4
// Copyright (C) 2008-2011 by the OpenStructure authors
5
//
6
// This library is free software; you can redistribute it and/or modify it under
7
// the terms of the GNU Lesser General Public License as published by the Free
8
// Software Foundation; either version 3.0 of the License, or (at your option)
9
// any later version.
10
// This library is distributed in the hope that it will be useful, but WITHOUT
11
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
13
// details.
14
//
15
// You should have received a copy of the GNU Lesser General Public License
16
// along with this library; if not, write to the Free Software Foundation, Inc.,
17
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
//------------------------------------------------------------------------------
19
#ifndef OST_GFX_MAP_SLAB_HH
20
#define OST_GFX_MAP_SLAB_HH
21
22
/*
23
Author: Ansgar Philippsen
24
*/
25
26
#include <boost/shared_ptr.hpp>
27
#include <boost/shared_array.hpp>
28
29
#include <
ost/geom/geom.hh
>
30
31
#include <
ost/img/map.hh
>
32
33
#include "
gfx_object.hh
"
34
#include "
glext_include.hh
"
35
36
namespace
ost {
namespace
gfx {
37
38
class
MapSlab
;
39
typedef
boost::shared_ptr<MapSlab>
MapSlabP
;
40
46
class
DLLEXPORT_OST_GFX
MapSlab
:
public
GfxObj
{
48
struct
PolyListEntry{
49
PolyListEntry() {}
50
PolyListEntry(
const
geom::Vec3
& pp,
const
geom::Vec2
& tt): p(pp), t(tt) {}
51
geom::Vec3
p;
52
geom::Vec3
t;
53
};
54
typedef
std::vector<PolyListEntry> PolyList;
55
56
public
:
62
MapSlab
(
const
String
& name,
const
img::MapHandle
& mh,
63
const
geom::Plane
& p);
64
65
virtual
geom::AlignedCuboid
GetBoundingBox()
const
;
66
67
virtual
geom::Vec3
GetCenter()
const
;
68
virtual
void
CustomRenderGL(
RenderPass
pass);
69
71
virtual
void
CustomRenderPov(
PovState
& pov);
72
73
geom::Plane
GetPlane()
const
;
77
void
SetPlane(
const
geom::Plane
& p);
78
80
81
82
void
ColorBy(
const
Gradient
& g,
float
minv,
float
maxv);
84
void
ColorBy(
const
Gradient
& g);
87
void
ColorBy(
const
Color
& c1,
const
Color
& c2,
float
minv,
float
maxv);
89
void
ColorBy(
const
Color
& c1,
const
Color
& c2);
91
protected
:
92
virtual
void
CustomPreRenderGL(
bool
flag);
93
94
void
Rebuild();
95
96
private
:
97
img::MapHandle
mh_;
98
geom::Plane
plane_;
99
uint
usize_;
100
uint
vsize_;
101
GLuint tex_id_;
102
boost::shared_array<float> tex_data_;
103
bool
rebuild_;
104
105
bool
valid_;
106
geom::Vec3
c0_,c1_,c2_,c3_;
107
PolyList poly_list_;
108
109
float
minv_,maxv_;
110
Gradient
grad_;
111
112
bool
calc_poly();
113
void
rebuild_tex();
114
void
render_slab();
115
};
116
117
}}
118
119
#endif
Generated on Mon Nov 5 2012 13:30:58 for OpenStructure by
1.8.1.1