FineKernelToolKit 4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
DrawCache.h
[詳解]
1#if !defined(__FK_DRAW_CACHE_HEADER__)
2#define __FK_DRAW_CACHE_HEADER__
3
4#include <FK/Reference.h>
5#include <FK/Vector.h>
6#include <list>
7
8namespace FK {
10
16
17 friend class fk_PointDraw;
18 friend class fk_LineDraw;
19 friend class fk_FaceDraw;
20
21 class Member {
22 public:
23 std::list<fk_Vertex *> vertexCache;
24 std::list<fk_Edge *> edgeCache;
25 std::list<fk_Loop *> loopCache;
26 std::vector<fk_Vector> vertexArray;
27
28 Member(void);
29 };
30
31 public:
32
33#ifndef FK_DOXYGEN_USER_PROCESS
34
35 fk_DrawCache(void);
36 virtual ~fk_DrawCache();
37
38 void AllClear_(void);
39 void PrintCache(void);
40
41#endif
42
43 private:
44 std::unique_ptr<Member> _m;
45
46 void ClearVCache(void);
47 void ClearECache(void);
48 void ClearLCache(void);
49 bool ClearVCache(fk_Vertex *);
50 bool ClearECache(fk_Edge *);
51 bool ClearLCache(fk_Loop *);
52
53 bool GetVCacheStatus(void);
54 bool GetECacheStatus(void);
55 bool GetLCacheStatus(void);
56 void MakeVCache(void);
57 void MakeECache(void);
58 void MakeLCache(void);
59 void AddVCache(fk_Vertex *);
60 void AddECache(fk_Edge *);
61 void AddLCache(fk_Loop *);
62
63 std::list<fk_Vertex *> * GetVCache(void);
64 std::list<fk_Edge *> * GetECache(void);
65 std::list<fk_Loop *> * GetLCache(void);
66
67 protected:
68
69#if !defined(FK_DOXYGEN_USER_PROCESS)
70 fk_Vertex * GetNewVertexObj(void);
71 fk_Vertex * GetNewVertexObj(int);
72 fk_Half * GetNewHalfObj(void);
73 fk_Half * GetNewHalfObj(int);
74 fk_Edge * GetNewEdgeObj(void);
75 fk_Edge * GetNewEdgeObj(int);
76 fk_Loop * GetNewLoopObj(void);
77 fk_Loop * GetNewLoopObj(int);
78
79 bool DeleteVertexObj(fk_Vertex *);
80 bool DeleteVertexObj(int);
81 bool DeleteHalfObj(fk_Half *);
82 bool DeleteHalfObj(int);
83 bool DeleteEdgeObj(fk_Edge *);
84 bool DeleteEdgeObj(int);
85 bool DeleteLoopObj(fk_Loop *);
86 bool DeleteLoopObj(int);
87
88 void AllCacheClear(void);
89 void AllCacheMake(void);
90#endif
91 };
92}
93
94
95
96#endif // !__FK_DRAW_CACHE_HEADER__
97
98/****************************************************************************
99 *
100 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
101 *
102 * Redistribution and use in source and binary forms,
103 * with or without modification, are permitted provided that the
104 * following conditions are met:
105 *
106 * - Redistributions of source code must retain the above
107 * copyright notice, this list of conditions and the
108 * following disclaimer.
109 *
110 * - Redistributions in binary form must reproduce the above
111 * copyright notice, this list of conditions and the
112 * following disclaimer in the documentation and/or
113 * other materials provided with the distribution.
114 *
115 * - Neither the name of the copyright holders nor the names
116 * of its contributors may be used to endorse or promote
117 * products derived from this software without specific
118 * prior written permission.
119 *
120 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
121 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
122 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
123 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
124 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
125 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
126 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
127 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
128 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
129 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
130 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
131 * POSSIBILITY OF SUCH DAMAGE.
132 *
133 ****************************************************************************/
134/****************************************************************************
135 *
136 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
137 *
138 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
139 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
140 *
141 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
142 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
143 *
144 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
145 * および下記免責条項を含めること。
146 *
147 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
148 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
149 * 含めること。
150 *
151 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
152 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
153 * コントリビューターの名前を使用してはならない。
154 *
155 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
156 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
157 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
158 * に限定されない、いかなる保証もないものとします。著作権者もコン
159 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
160 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
161 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
162 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
163 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
164 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
165 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
166 * ついて、一切責任を負わないものとします。
167 *
168 ****************************************************************************/
描画用キャッシュデータを管理するクラス
Definition DrawCache.h:15
friend class fk_PointDraw
Definition DrawCache.h:17
friend class fk_LineDraw
Definition DrawCache.h:18
friend class fk_FaceDraw
Definition DrawCache.h:19
ソリッドモデルの稜線位相を管理するクラス
Definition Edge.h:41
ソリッドモデルの半稜線位相を管理するクラス
Definition Half.h:25
ソリッドモデルのループ位相を管理するクラス
Definition Loop.h:43
位相状態参照用クラス(Level3)
Definition Reference.h:432
ソリッドモデルの頂点位相を管理するクラス
Definition Vertex.h:26
Fine Kernel Toolkit 名前空間
Definition Angle.h:6