FineKernelToolKit 2.9.0

- メインページ
- ネームスペース
- クラス
- ファイル

- ファイル一覧
- ファイルメンバ

全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義 ページ
Texture.h
説明を見る。
1 /****************************************************************************
2 *
3 * Copyright (c) 1999-2014, Fine Kernel Project, All rights reserved.
4 *
5 * Redistribution and use in source and binary forms,
6 * with or without modification, are permitted provided that the
7 * following conditions are met:
8 *
9 * - Redistributions of source code must retain the above
10 * copyright notice, this list of conditions and the
11 * following disclaimer.
12 *
13 * - Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the
15 * following disclaimer in the documentation and/or
16 * other materials provided with the distribution.
17 *
18 * - Neither the name of the copyright holders nor the names
19 * of its contributors may be used to endorse or promote
20 * products derived from this software without specific
21 * prior written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
32 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
33 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 * POSSIBILITY OF SUCH DAMAGE.
35 *
36 ****************************************************************************/
37 /****************************************************************************
38 *
39 * Copyright (c) 1999-2014, Fine Kernel Project, All rights reserved.
40 *
41 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
42 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
43 *
44 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
45 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
46 *
47 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
48 * および下記免責条項を含めること。
49 *
50 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
51 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
52 * 含めること。
53 *
54 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
55 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
56 * コントリビューターの名前を使用してはならない。
57 *
58 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
59 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
60 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
61 * に限定されない、いかなる保証もないものとします。著作権者もコン
62 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
63 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
64 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
65 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
66 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
67 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
68 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
69 * ついて、一切責任を負わないものとします。
70 *
71 ****************************************************************************/
72 #ifndef __FK_TEXTURE_HEADER__
73 #define __FK_TEXTURE_HEADER__
74
75 #include <FK/Shape.h>
76 #include <FK/Image.h>
77 #include <FK/IndexFace.h>
78
79 class fk_MQOParser;
80 class fk_IndexFaceSet;
81
83 enum fk_TexMode {
84 FK_TEX_MODULATE,
85 FK_TEX_REPLACE,
86 FK_TEX_DECAL
87 };
88
90 enum fk_TexRendMode {
91 FK_TEX_REND_NORMAL,
92 FK_TEX_REND_SMOOTH
93 };
94
96
107 class fk_TexCoord {
108
109 public:
110
111 float x;
112 float y;
113
115
119 fk_TexCoord(double x = 0.0, double y = 0.0);
120
122 fk_TexCoord(const fk_TexCoord &);
123
125 fk_TexCoord & operator =(const fk_TexCoord &);
126
128
139 bool operator ==(const fk_TexCoord &) const;
140
142
148 void set(double x, double y);
149 };
150
152
160 class fk_Texture: public fk_Shape {
161 friend class fk_TextureDraw;
162
163 private:
164 fk_Image *image;
165 fk_Image localImage;
166 fk_TexMode texMode;
167 fk_TexRendMode texRendMode;
168 fk_Palette localPal;
169
170 bool GetInitFlag(void);
171 void SetInitFlag(bool);
172 fk_TexID GetTexID(void);
173 void SetTexID(const fk_TexID);
174
175 static void ClearTexState(fk_Image *);
176
177 protected:
178
179 #ifndef FK_DOXYGEN_USER_PROCESS
180
181 void BaseInit(void);
182 bool IsLocalImage(void);
183 void SetLocalImage(void);
184
185 #endif
186
187 public:
188
189 #ifndef FK_DOXYGEN_USER_PROCESS
190
191 fk_Texture(fk_Image * = (fk_Image *)NULL);
192 virtual ~fk_Texture();
193 virtual void init(void) = 0;
194
195 #endif
196
198
210 void setImage(fk_Image *image);
211
213
218 fk_Image * getImage(void);
219
221
229 bool readBMP(std::string fileName);
230
232
242 bool readBMPData(fk_ImType *buf);
243
245
253 bool readPNG(std::string fileName);
254
256
266 bool readPNGData(fk_ImType *buf);
267
269
277 bool readJPG(std::string fileName);
278
280
287 const fk_Dimension * getImageSize(void);
288
290
302 const fk_Dimension * getBufferSize(void);
303
305
351 void setTextureMode(fk_TexMode mode);
352
354
361 fk_TexMode getTextureMode(void);
362
364
374 void setTexRendMode(fk_TexRendMode mode);
375
377
384 fk_TexRendMode getTexRendMode(void);
385
387
394 void fillColor(const fk_Color &color);
395
397
406 void fillColor(int r, int g, int b, int a = 0);
407
409
425 const fk_ImType * getImageBuf(void);
426 };
427
429
448 class fk_RectTexture : public fk_Texture {
449
450 friend class fk_TextureDraw;
451
452 private:
453
454 fk_TexCoord texSize;
455 bool repeatFlag;
456 fk_TexCoord repeatParam;
457 fk_TexCoord texCoord[2];
458
459 public:
460
462
467 fk_RectTexture(fk_Image *image = (fk_Image *)NULL);
468
470 virtual ~fk_RectTexture();
471
473
476 void init(void);
477
479
488 bool setTextureSize(double w, double h);
489
491
496 fk_TexCoord getTextureSize(void);
497
499
516 void setRepeatMode(bool mode);
517
519
527 bool getRepeatMode(void);
528
530
542 void setRepeatParam(double wNum, double hNum);
543
545
552 fk_TexCoord getRepeatParam(void);
553
555
567 void setTextureCoord(double sX, double sY,
568 double eX, double eY);
569
571
581 void setTextureCoord(const fk_TexCoord &S,
582 const fk_TexCoord &E);
583
585
597 fk_TexCoord getTextureCoord(int ID);
598 };
599
601
621 class fk_TriTexture : public fk_Texture {
622
623 friend class fk_TextureDraw;
624
625 private:
626 fk_Vector pos[3];
627 fk_TexCoord texCoord[3];
628
629 fk_Vector * getPos(void);
630 fk_TexCoord * getCoord(void);
631
632 public:
633
635
640 fk_TriTexture(fk_Image *image = (fk_Image *)NULL);
641
643 virtual ~fk_TriTexture();
644
646
649 void init(void);
650
652
671 bool setTextureCoord(int ID, double x, double y);
672
674
689 bool setTextureCoord(int ID, fk_TexCoord coord);
690
692
701 fk_TexCoord getTextureCoord(int ID);
702
704
718 bool setVertexPos(int ID, double x, double y, double z);
719
721
733 bool setVertexPos(int ID, fk_Vector pos);
734
736
745 fk_Vector getVertexPos(int ID);
746 };
747
749
778 class fk_MeshTexture : public fk_Texture {
779
780 friend class fk_TextureDraw;
781
782 private:
783
784 int triNum;
785 std::vector<fk_Vector> posArray;
786 std::vector<fk_TexCoord> coordArray;
787
788 std::vector<fk_Vector> * getPos(void);
789 std::vector<fk_TexCoord> * getCoord(void);
790
791 public:
792
794
799 fk_MeshTexture(fk_Image *image = (fk_Image *)NULL);
800
802 virtual ~fk_MeshTexture();
803
805
808 void init(void);
809
811
819 bool setTriNum(int num);
820
822
829 int getTriNum(void);
830
832
855 bool setTextureCoord(int tID, int vID,
856 double x, double y);
857
859
878 bool setTextureCoord(int tID, int vID, fk_TexCoord coord);
879
881
896 bool setTriTextureCoord(int tID,
897 std::vector<fk_TexCoord> *array);
898
900
915 bool setTriTextureCoord(int tID,
916 fk_TexCoord *array);
917
919
933 fk_TexCoord getTextureCoord(int tID, int vID);
934
936
954 bool setVertexPos(int tID, int vID,
955 double x, double y, double z);
956
958
974 bool setVertexPos(int tID, int vID, fk_Vector pos);
975
977
991 bool setTriPos(int tID, std::vector<fk_Vector> *array);
992
994
1008 bool setTriPos(int tID, fk_Vector *array);
1009
1011
1025 fk_Vector getVertexPos(int tID, int vID);
1026
1028
1034 void putIndexFaceSet(fk_IndexFaceSet *ifs);
1035
1037
1063 bool readMQOFile(std::string fileName,
1064 std::string objName,
1065 bool contFlg = true);
1066 };
1067
1068 #endif // !__FK_TEXTURE_HEADER__
fk_MeshTexture::setTextureCoord
bool setTextureCoord(int tID, int vID, double x, double y)
テクスチャ座標設定関数1
fk_RectTexture::setTextureSize
bool setTextureSize(double w, double h)
テクスチャサイズ設定関数
fk_RectTexture::init
void init(void)
初期化関数
fk_TexCoord::operator=
fk_TexCoord & operator=(const fk_TexCoord &)
代入演算子
FK_TEX_REPLACE
画像モード
Definition: Texture.h:85
fk_Texture::getImage
fk_Image * getImage(void)
画像データ取得関数
fk_Palette
マテリアルパレットを管理するクラス
Definition: Palette.h:95
fk_Texture::readBMP
bool readBMP(std::string fileName)
BMP ファイル入力関数
fk_RectTexture::getTextureCoord
fk_TexCoord getTextureCoord(int ID)
部分抽出参照関数
fk_RectTexture::getTextureSize
fk_TexCoord getTextureSize(void)
テクスチャサイズ参照関数
fk_MeshTexture::setTriTextureCoord
bool setTriTextureCoord(int tID, std::vector< fk_TexCoord > *array)
テクスチャ座標配列設定関数1
FK_TEX_DECAL
線形補間モード
Definition: Texture.h:86
fk_TriTexture
3角形テクスチャを生成、管理するクラス
Definition: Texture.h:621
fk_RectTexture::setRepeatParam
void setRepeatParam(double wNum, double hNum)
リピートモード枚数設定関数
fk_MeshTexture::getVertexPos
fk_Vector getVertexPos(int tID, int vID)
頂点位置ベクトル参照関数
fk_MeshTexture::setVertexPos
bool setVertexPos(int tID, int vID, double x, double y, double z)
頂点位置ベクトル設定関数1
fk_TriTexture::fk_TextureDraw
friend class fk_TextureDraw
Definition: Texture.h:623
fk_Vector
3次元ベクトルを管理するクラス
Definition: Vector.h:110
fk_MeshTexture::setTriNum
bool setTriNum(int num)
3角形面数設定関数
fk_MeshTexture::getTriNum
int getTriNum(void)
3角形面数参照関数
IndexFace.h
fk_RectTexture::setTextureCoord
void setTextureCoord(double sX, double sY, double eX, double eY)
部分抽出設定関数1
fk_TriTexture::getVertexPos
fk_Vector getVertexPos(int ID)
頂点位置ベクトル取得関数
fk_Texture::setTexRendMode
void setTexRendMode(fk_TexRendMode mode)
テクスチャ描画品質設定関数
fk_TexCoord::set
void set(double x, double y)
成分設定関数
fk_Shape
形状用基底クラス
Definition: Shape.h:86
fk_Color
RGB色を管理するクラス
Definition: Material.h:92
fk_Texture::fk_TextureDraw
friend class fk_TextureDraw
Definition: Texture.h:161
fk_Texture::setTextureMode
void setTextureMode(fk_TexMode mode)
テクスチャモード設定関数
fk_TriTexture::getTextureCoord
fk_TexCoord getTextureCoord(int ID)
テクスチャ座標取得関数
fk_RectTexture::getRepeatParam
fk_TexCoord getRepeatParam(void)
リピートモード枚数参照関数
fk_IndexFaceSet
インデックスフェースセットによる任意形状を生成、管理するクラス
Definition: IndexFace.h:145
fk_Texture::readBMPData
bool readBMPData(fk_ImType *buf)
BMP バッファ入力関数
fk_MeshTexture::getTextureCoord
fk_TexCoord getTextureCoord(int tID, int vID)
テクスチャ座標参照関数
Image.h
fk_Texture::setImage
void setImage(fk_Image *image)
画像データ設定関数
fk_TexCoord::y
float y
y成分
Definition: Texture.h:112
fk_RectTexture
矩形テクスチャを生成、管理するクラス
Definition: Texture.h:448
fk_RectTexture::setRepeatMode
void setRepeatMode(bool mode)
リピートモード設定関数
fk_TexCoord::x
float x
x成分
Definition: Texture.h:111
fk_RectTexture::fk_RectTexture
fk_RectTexture(fk_Image *image=(fk_Image *) NULL)
コンストラクタ
fk_Texture::getBufferSize
const fk_Dimension * getBufferSize(void)
画像バッファサイズ取得関数
fk_Texture::readPNG
bool readPNG(std::string fileName)
PNG ファイル入力関数
fk_MeshTexture
メッシュテクスチャを生成、管理するクラス
Definition: Texture.h:778
fk_TexMode
fk_TexMode
テクスチャモードを表す列挙型
Definition: Texture.h:83
fk_Texture::getTextureMode
fk_TexMode getTextureMode(void)
テクスチャモード取得関数
fk_TexCoord::fk_TexCoord
fk_TexCoord(double x=0.0, double y=0.0)
コンストラクタ
FK_TEX_REND_SMOOTH
高品質
Definition: Texture.h:92
fk_Texture::fillColor
void fillColor(const fk_Color &color)
一様色初期化関数1
fk_RectTexture::~fk_RectTexture
virtual ~fk_RectTexture()
デストラクタ
fk_Texture
テクスチャ用基底クラス
Definition: Texture.h:160
fk_TriTexture::setTextureCoord
bool setTextureCoord(int ID, double x, double y)
テクスチャ座標設定関数1
fk_Texture::getTexRendMode
fk_TexRendMode getTexRendMode(void)
テクスチャ描画品質取得関数
fk_MeshTexture::init
void init(void)
初期化関数
fk_TriTexture::init
void init(void)
初期化関数
fk_Image
画像を生成、管理するクラス
Definition: Image.h:235
fk_RectTexture::getRepeatMode
bool getRepeatMode(void)
リピートモード参照関数
fk_MeshTexture::fk_TextureDraw
friend class fk_TextureDraw
Definition: Texture.h:780
fk_TriTexture::setVertexPos
bool setVertexPos(int ID, double x, double y, double z)
頂点位置ベクトル設定関数1
fk_Texture::readJPG
bool readJPG(std::string fileName)
JPEG ファイル入力関数
fk_MeshTexture::setTriPos
bool setTriPos(int tID, std::vector< fk_Vector > *array)
頂点位置ベクトル配列設定関数1
fk_TexCoord::operator==
bool operator==(const fk_TexCoord &) const
等号比較演算子
fk_TriTexture::fk_TriTexture
fk_TriTexture(fk_Image *image=(fk_Image *) NULL)
コンストラクタ
fk_Texture::getImageSize
const fk_Dimension * getImageSize(void)
画像サイズ取得関数
fk_RectTexture::fk_TextureDraw
friend class fk_TextureDraw
Definition: Texture.h:450
FK_TEX_MODULATE
積算モード
Definition: Texture.h:84
fk_Texture::getImageBuf
const fk_ImType * getImageBuf(void)
画像データ配列先頭アドレス取得関数
fk_Dimension
画像サイズを表すクラス
Definition: Image.h:141
fk_TexRendMode
fk_TexRendMode
テクスチャ描画品質を表す列挙型
Definition: Texture.h:90
FK_TEX_REND_NORMAL
標準品質
Definition: Texture.h:91
fk_MeshTexture::fk_MeshTexture
fk_MeshTexture(fk_Image *image=(fk_Image *) NULL)
コンストラクタ
fk_MeshTexture::readMQOFile
bool readMQOFile(std::string fileName, std::string objName, bool contFlg=true)
MQOファイル入力関数
Shape.h
fk_TexCoord
テクスチャ座標を管理するクラス
Definition: Texture.h:107
fk_TriTexture::~fk_TriTexture
virtual ~fk_TriTexture()
デストラクタ
fk_MeshTexture::putIndexFaceSet
void putIndexFaceSet(fk_IndexFaceSet *ifs)
fk_IndexFaceSet インスタンスコピー関数
fk_Texture::readPNGData
bool readPNGData(fk_ImType *buf)
PNG バッファ入力関数
fk_MeshTexture::~fk_MeshTexture
virtual ~fk_MeshTexture()
デストラクタ