+private:
+ enum ParameterMask
+ {
+ MODE = 1,
+ COLOR = 2
+ };
+
+ TexEnvMode mode;
+ Color color;
+
+public:
+ TexEnv();
+ ~TexEnv();
+
+ static const TexEnv &default_object();
+
+private:
+ void update_parameter(int) const;
+
+public:
+ void set_mode(TexEnvMode);
+ void set_color(const Color &);
+ TexEnvMode get_mode() const { return mode; }
+ const Color &get_color() const { return color; }
+ void bind() const { bind_to(0); }
+ void bind_to(unsigned) const;
+
+ static const TexEnv *current(unsigned = 0);
+ static void unbind() { unbind_from(0); }
+ static void unbind_from(unsigned);