00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef _OSGTEXTVECTORFACE_H_
00040 #define _OSGTEXTVECTORFACE_H_
00041
00042 #ifdef _MSC_VER
00043 # pragma once
00044 #endif
00045
00046
00047 #include <OSGConfig.h>
00048 #include <OSGSystemDef.h>
00049 #include <OSGBaseTypes.h>
00050 #include <OSGGeometry.h>
00051 #include <OSGNode.h>
00052
00053 #include "OSGTextFace.h"
00054 #include "OSGTextGlyph.h"
00055
00056 #include <string>
00057 #include <map>
00058 #include <memory>
00059
00060
00061 OSG_BEGIN_NAMESPACE
00062
00063
00064 class TextVectorGlyph;
00065 class TextLayoutResult;
00066
00067
00111 class OSG_SYSTEMLIB_DLLMAPPING TextVectorFace: public TextFace
00112 {
00113
00114 public:
00115
00122 virtual const TextGlyph &getGlyph(TextGlyph::Index glyphIndex);
00123
00130 const TextVectorGlyph &getVectorGlyph(TextGlyph::Index glyphIndex);
00131
00146 void fillGeo(GeometryPtr &geoPtr, const TextLayoutResult &layoutResult,
00147 Real32 scale = 1.f, Real32 depth = 0.f, UInt32 level = 2,
00148 Real32 creaseAngle = Pi / 4.f);
00149
00164 GeometryPtr makeGeo(const TextLayoutResult &layoutResult, Real32 scale = 1.f,
00165 Real32 depth = 0.f, UInt32 level = 2, Real32 creaseAngle = Pi / 4.f);
00166
00181 NodePtr makeNode(const TextLayoutResult &layoutResult, Real32 scale = 1.f,
00182 Real32 depth = 0.f, UInt32 level = 2, Real32 creaseAngle = Pi / 4.f);
00183
00190 static TextVectorFace *create(const std::string &family,
00191 Style style = STYLE_PLAIN);
00192
00193
00194 protected:
00195
00197 inline TextVectorFace();
00198
00200 virtual ~TextVectorFace();
00201
00203 Real32 _scale;
00204
00206 typedef std::map<TextGlyph::Index, TextVectorGlyph*> GlyphMap;
00207
00209 GlyphMap _glyphMap;
00210
00218 virtual std::auto_ptr<TextVectorGlyph> createGlyph(TextGlyph::Index glyphIndex) = 0;
00219
00221 static TextVectorGlyph _emptyGlyph;
00222
00223
00224 private:
00225
00227 TextVectorFace(const TextVectorFace &);
00228
00230 const TextVectorFace &operator=(const TextVectorFace &);
00231 };
00232
00233
00234 OSG_END_NAMESPACE
00235
00236
00237 #include <OSGTextVectorFace.inl>
00238
00239 #define OSGTEXTVECTORFACE_HEADER_CVSID "@(#)$Id: OSGTextVectorFace.h,v 1.1 2005/03/03 13:43:07 a-m-z Exp $"
00240
00241 #endif