root/OpenSceneGraph/trunk/src/osgWrappers/deprecated-dotosg/osg/TexEnv.cpp @ 13041

Revision 13041, 2.6 kB (checked in by robert, 2 years ago)

Ran script to remove trailing spaces and tabs

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1#include "osg/TexEnv"
2#include <osg/io_utils>
3
4#include "osgDB/Registry"
5#include "osgDB/Input"
6#include "osgDB/Output"
7
8#include <string.h>
9
10using namespace osg;
11using namespace osgDB;
12
13// forward declare functions to use later.
14bool TexEnv_readLocalData(Object& obj, Input& fr);
15bool TexEnv_writeLocalData(const Object& obj, Output& fw);
16bool TexEnv_matchModeStr(const char* str,TexEnv::Mode& mode);
17const char* TexEnv_getModeStr(TexEnv::Mode mode);
18
19// register the read and write functions with the osgDB::Registry.
20REGISTER_DOTOSGWRAPPER(TexEnv)
21(
22    new osg::TexEnv,
23    "TexEnv",
24    "Object StateAttribute TexEnv",
25    &TexEnv_readLocalData,
26    &TexEnv_writeLocalData
27);
28
29
30bool TexEnv_readLocalData(Object& obj, Input& fr)
31{
32    bool iteratorAdvanced = false;
33
34    TexEnv& texenv = static_cast<TexEnv&>(obj);
35
36    TexEnv::Mode mode;
37    if (fr[0].matchWord("mode") && TexEnv_matchModeStr(fr[1].getStr(),mode))
38    {
39        texenv.setMode(mode);
40        fr+=2;
41        iteratorAdvanced = true;
42    }
43
44    if (fr.matchSequence("color %f %f %f %f"))
45    {
46        osg::Vec4 color;
47        fr[1].getFloat(color[0]);
48        fr[2].getFloat(color[1]);
49        fr[3].getFloat(color[2]);
50        fr[4].getFloat(color[3]);
51
52        texenv.setColor(color);
53
54        fr+=5;
55        iteratorAdvanced = true;
56    }
57
58    return iteratorAdvanced;
59}
60
61bool TexEnv_writeLocalData(const Object& obj, Output& fw)
62{
63    const TexEnv& texenv = static_cast<const TexEnv&>(obj);
64
65    fw.indent() << "mode " << TexEnv_getModeStr(texenv.getMode()) << std::endl;
66
67    switch(texenv.getMode())
68    {
69        case(TexEnv::DECAL):
70        case(TexEnv::MODULATE):
71        case(TexEnv::REPLACE):
72        case(TexEnv::ADD):
73            break;
74        case(TexEnv::BLEND):
75        default:
76            fw.indent() << "color " << texenv.getColor() << std::endl;
77            break;
78    }
79
80    return true;
81}
82
83bool TexEnv_matchModeStr(const char* str,TexEnv::Mode& mode)
84{
85    if (strcmp(str,"DECAL")==0)         mode = TexEnv::DECAL;
86    else if (strcmp(str,"MODULATE")==0) mode = TexEnv::MODULATE;
87    else if (strcmp(str,"BLEND")==0)    mode = TexEnv::BLEND;
88    else if (strcmp(str,"REPLACE")==0)  mode = TexEnv::REPLACE;
89    else if (strcmp(str,"ADD")==0)      mode = TexEnv::ADD;
90    else return false;
91    return true;
92}
93
94
95const char* TexEnv_getModeStr(TexEnv::Mode mode)
96{
97    switch(mode)
98    {
99        case(TexEnv::DECAL):    return "DECAL";
100        case(TexEnv::MODULATE): return "MODULATE";
101        case(TexEnv::BLEND):    return "BLEND";
102        case(TexEnv::REPLACE):  return "REPLACE";
103        case(TexEnv::ADD):      return "ADD";
104    }
105    return "";
106}
Note: See TracBrowser for help on using the browser.