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
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072 #ifndef __FK_MATERIAL_HEADER__
00073 #define __FK_MATERIAL_HEADER__
00074
00075 #include <FK/Base.h>
00076
00077 const float FK_COLOR_EPS = 0.0001f;
00078
00080
00092 class fk_Color : public fk_BaseObject {
00093 public:
00094
00096
00100 float col[4];
00101
00103
00111 fk_Color(float r = 0.2f, float g = 0.2f, float b = 0.2f);
00112
00114
00121 fk_Color(double r, double g, double b);
00122
00124 ~fk_Color() {}
00125
00127
00132 friend bool operator ==(fk_Color left, fk_Color right);
00133
00135 fk_Color(const fk_Color &col);
00136
00138 fk_Color & operator =(const fk_Color &col);
00139
00141
00144 void init(void);
00145
00147
00155 void init(float r, float g, float b, float a = 1.0f);
00156
00158
00166 void init(double r, double g, double b, double a = 1.0);
00167
00169
00177 void set(float r, float g, float b, float a = 1.0f);
00178
00180
00188 void set(double r, double g, double b, double a = 1.0);
00189
00191
00194 void setR(float r);
00195
00197
00200 void setG(float g);
00201
00203
00206 void setB(float b);
00207
00209
00212 void setA(float a);
00213
00215
00218 void setR(double r);
00219
00221
00224 void setG(double g);
00225
00227
00230 void setB(double b);
00231
00233
00236 void setA(double a);
00237
00239
00242 float getR(void) const;
00243
00245
00248 float getG(void) const;
00249
00251
00254 float getB(void) const;
00255
00257
00260 float getA(void) const;
00261 };
00262
00264
00299 class fk_Material : public fk_BaseObject {
00300
00301 private:
00302 float alpha;
00303 fk_Color ambient;
00304 fk_Color diffuse;
00305 fk_Color emission;
00306 fk_Color specular;
00307 float shininess;
00308
00309 public:
00310
00312 fk_Material();
00313
00315 ~fk_Material() {}
00316
00318
00323 friend int operator==(fk_Material left, fk_Material right);
00324
00326 fk_Material(const fk_Material &arg);
00327
00329 fk_Material & operator =(const fk_Material &arg);
00330
00332
00335 void init(void);
00336
00338
00340
00354 void setAlpha(float a);
00355
00357
00371 void setAlpha(double a);
00372
00374
00379 void setAmbient(fk_Color c);
00380
00382
00392 void setAmbient(float r, float g, float b);
00393
00395
00405 void setAmbient(double r, double g, double b);
00406
00408
00413 void setDiffuse(fk_Color c);
00414
00416
00426 void setDiffuse(float r, float g, float b);
00427
00429
00439 void setDiffuse(double r, double g, double b);
00440
00442
00447 void setSpecular(fk_Color c);
00448
00450
00460 void setSpecular(float r, float g, float b);
00461
00463
00473 void setSpecular(double r, double g, double b);
00474
00476
00481 void setEmission(fk_Color c);
00482
00484
00494 void setEmission(float r, float g, float b);
00495
00497
00507 void setEmission(double r, double g, double b);
00508
00510
00515 void setShininess(float s);
00516
00518
00523 void setShininess(double s);
00524
00526
00531 void setAmbDiff(fk_Color c);
00532
00534
00544 void setAmbDiff(float r, float g, float b);
00545
00547
00557 void setAmbDiff(double r, double g, double b);
00558
00559
00561
00562
00564
00569 float getAlpha(void);
00570
00572
00581 fk_Color * getAmbient(void);
00582
00584
00593 fk_Color * getDiffuse(void);
00594
00596
00605 fk_Color * getSpecular(void);
00606
00608
00617 fk_Color * getEmission(void);
00618
00620
00625 float getShininess(void);
00626
00627
00629
00639 static void initDefault(void);
00640
00641 #ifndef FK_DOXYGEN_USER_PROCESS
00642
00643 void Print(int, std::string = "");
00644
00645 #endif
00646
00647 };
00648
00649 #endif // __FK_MATERIAL_HEADER__