DXフレームワーク　リファレンス・マニュアル 0.01 DXフレームワークのリファレンスです。詳細は公式wiki

- メインページ
- 関連ページ
- クラス
- ファイル

- ファイル一覧

Image.h
1 #pragma once
2 #include<DxLib.h>
3 #include<vector>
4 #include<string>
5 #include<memory>
6 #define NULL_HANDLE -1
7
8 namespace DXFW
9 {
10
12 enum class ZMaskType
13 {
14 Clear = DX_ZWRITE_CLEAR,
15 Mask = DX_ZWRITE_MASK,
16 };
17
19 enum class RGBA
20 {
21 SrcR = DX_RGBA_SELECT_SRC_R,
22 SrcG = DX_RGBA_SELECT_SRC_G,
23 SrcB = DX_RGBA_SELECT_SRC_B,
24 SrcA = DX_RGBA_SELECT_SRC_A,
25 BlendR = DX_RGBA_SELECT_BLEND_R,
26 BlendG = DX_RGBA_SELECT_BLEND_G,
27 BlendB = DX_RGBA_SELECT_BLEND_B,
28 BlendA = DX_RGBA_SELECT_BLEND_A
29 };
30
32 enum class ClipType
33 {
34 Less = DX_CMP_LESS,
35 Greater = DX_CMP_GREATER
36 };
37
51 class Image
52 {
53 friend class Anime;
54 friend class ImagePack;
55
56 private:
57 bool isScreen;
58 bool isAlphaChannel;
59 int handle;
60 bool isTrans;
61
62 int width;
63 int height;
64 Image(int handle):
65 handle(handle),
66 isTrans(true),
67 isAlphaChannel(false),
68 isScreen(false)
69 {
70 DxLib::GetGraphSize( this->GetHandle() , &width , &height );
71 }
72 public:
73 Image():
74 handle(NULL_HANDLE),
75 isTrans(true),
76 isAlphaChannel(false),
77 isScreen(false),
78 width(0),
79 height(0)
80 {};
81
83 Image(const char *ファイル名)
84 {
85 Image::Load(ファイル名);
86 }
87
89 Image(int 幅 ,int 高さ , bool 透過フラグ , bool スクリーン用フラグ , bool αチャンネルフラグ ):
90 isTrans(透過フラグ),
91 isScreen(スクリーン用フラグ),
92 isAlphaChannel(αチャンネルフラグ)
93 {
94 if( スクリーン用フラグ )
95 {
96 this->handle = DxLib::MakeScreen( 幅 , 高さ , αチャンネルフラグ);
97 }
98 else
99 {
100 this->handle = DxLib::MakeGraph( 幅 , 高さ );
101 }
102 DxLib::GetGraphSize( this->GetHandle() , &幅 , &高さ );
103 }
104
106 bool Load(const char *ファイル名)
107 {
108 if( this->handle != NULL_HANDLE) DxLib::DeleteGraph(this->handle);
109 this->handle = DxLib::LoadGraph(ファイル名);
110 this->isTrans = true;
111 this->isScreen = false;
112
113 DxLib::GetGraphSize( this->GetHandle() , &width , &height );
114 return ( this->handle != -1 );
115 }
116
118 bool Release()
119 {
120 return (DxLib::DeleteGraph(this->handle) == 0);
121 }
122
124 int Make(int width,int 高さ,bool isTrans = true ,bool isScreen = false , bool isAlphaChannel = true )
125 {
126 if( this->handle != NULL_HANDLE) DxLib::DeleteGraph(this->handle);
127 if( isScreen )
128 {
129 this->handle = DxLib::MakeScreen( width , 高さ , isAlphaChannel);
130 }
131 else
132 {
133 this->handle = DxLib::MakeGraph( width , 高さ );
134 }
135 this->isTrans = isTrans;
136 this->isScreen = isScreen;
137 this->isAlphaChannel = isAlphaChannel;
138 this->width = width;
139 this->height = 高さ;
140
141 return this->handle;
142 }
143
145 int Copy(const Image& img,int x , int y,int width,int 高さ)
146 {
147 this->handle = DxLib::DerivationGraph( x , y , width , 高さ , img.handle);
148 this->isTrans = img.isTrans;
149 this->isScreen = false;
150 this->isAlphaChannel = false;
151 this->width = width;
152 this->height = 高さ;
153 return this->handle;
154 }
155
157 int GetHandle() const
158 {
159 return this->handle;
160 }
161
163 bool Draw(int X座標,int Y座標 , bool 反転フラグ = false) const
164 {
165 if( 反転フラグ )
166 {
167 return !DxLib::DrawTurnGraph( X座標 , Y座標 , this->GetHandle() , this->isTrans );
168 }else{
169 return !DxLib::DrawGraph( X座標 , Y座標 , this->GetHandle() , this->isTrans );
170 }
171 }
172 bool ZMask(int X座標,int Y座標 , ZMaskType Zマスクタイプ , bool 反転フラグ = false) const
173 {
174 if( 反転フラグ )
175 {
176 return !DxLib::DrawTurnGraphToZBuffer( X座標 , Y座標 , this->GetHandle() , (int)Zマスクタイプ );
177 }else{
178 return !DxLib::DrawGraphToZBuffer( X座標 , Y座標 , this->GetHandle() , (int)Zマスクタイプ );
179 }
180 }
181
183 bool DrawExtend(int X座標A,int Y座標A,int X座標B,int Y座標B ) const
184 {
185 return !DxLib::DrawExtendGraph( X座標A, Y座標A, X座標B, Y座標B , this->GetHandle() , this->isTrans );
186 }
187 bool ZMaskExtend(int X座標A,int Y座標A,int X座標B,int Y座標B , ZMaskType Zマスクタイプ) const
188 {
189 return !DxLib::DrawExtendGraphToZBuffer( X座標A, Y座標A, X座標B, Y座標B , this->GetHandle() , (int)Zマスクタイプ );
190 }
191
193 bool DrawRotate(int x,int y,double 拡大率,double 角度,bool 反転フラグ = false ) const
194 {
195 return !DxLib::DrawRotaGraph( x , y , 拡大率 , 角度 , this->GetHandle() , this->isTrans , 反転フラグ );
196 }
197 bool DrawRotateZMask(int x,int y,double 拡大率,double 角度 , ZMaskType Zマスクタイプ ,bool 反転フラグ = false ) const
198 {
199 return !DxLib::DrawRotaGraphToZBuffer( x , y , 拡大率 , 角度 , this->GetHandle() , (int)Zマスクタイプ , 反転フラグ );
200 }
201
203 bool DrawRotateAxis(int x,int y,int X軸,int Y軸,double 拡大率,double 角度,bool 反転フラグ = false ) const
204 {
205 return !DxLib::DrawRotaGraph2( x , y , X軸 , Y軸 , 拡大率 , 角度 , this->GetHandle() , this->isTrans , 反転フラグ );
206 }
207 bool ZMaskRotateAxis(int x,int y,int X軸,int Y軸,double 拡大率,double 角度, ZMaskType Zマスクタイプ , bool 反転フラグ = false ) const
208 {
209 return !DxLib::DrawRotaGraph2ToZBuffer( x , y , X軸 , Y軸 , 拡大率 , 角度 , this->GetHandle() , (int)Zマスクタイプ , 反転フラグ );
210 }
211
213 bool DrawRotateAxis(int x,int y,int X軸,int Y軸,double 拡大率X,double 拡大率Y,double 角度,bool 反転フラグ =false) const
214 {
215 return !DxLib::DrawRotaGraph3( x , y , X軸 , Y軸 , 拡大率X , 拡大率Y , 角度 , this->GetHandle() , this->isTrans , 反転フラグ );
216 }
217 bool ZMaskRotateAxis(int x,int y,int X軸,int Y軸,double 拡大率X,double 拡大率Y,double 角度, ZMaskType Zマスクタイプ , bool 反転フラグ = false) const
218 {
219 return !DxLib::DrawRotaGraph3ToZBuffer( x , y , X軸 , Y軸 , 拡大率X , 拡大率Y , 角度 , this->GetHandle() , (int)Zマスクタイプ , 反転フラグ );
220 }
221
223 bool DrawModify(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4 ) const
224 {
225 return !DxLib::DrawModiGraph( x1 , y1 , x2 , y2 , x3 , y3 , x4 , y4 , this->GetHandle() , this->isTrans );
226 }
227 bool ZMaskModify(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4 , ZMaskType Zマスクタイプ) const
228 {
229 return !DxLib::DrawModiGraphToZBuffer( x1 , y1 , x2 , y2 , x3 , y3 , x4 , y4 , this->GetHandle() , (int)Zマスクタイプ );
230 }
231
233 bool DrawPart(int destX,int destY,int srcX, int srcY, int 幅, int 高さ, bool 反転フラグ ) const
234 {
235 return !DxLib::DrawRectGraph( destX , destY , srcX , srcY , 幅 , 高さ , this->GetHandle() , this->isTrans , 反転フラグ );
236 }
237 bool ZMaskPart(int destX,int destY,int srcX, int srcY, int 幅, int 高さ , ZMaskType Zマスクタイプ , bool 反転フラグ = false) const
238 {
239 return !DxLib::DrawRectGraph( destX , destY , srcX , srcY , 幅 , 高さ , this->GetHandle() , (int)Zマスクタイプ , 反転フラグ );
240 }
241
244 int LoadScreen(int x,int y)
245 {
246 int w,h;
247 DxLib::GetGraphSize( this->GetHandle() , &w , &h );
248 return DxLib::GetDrawScreenGraph( x , y , x + w , y + h , this->GetHandle() );
249 }
250
252 int GetWidth() const
253 {
254 return width;
255 }
256
258 int GetHeight() const
259 {
260 return height;
261 }
262
264 bool GetIsScreen() const
265 {
266 return this->isScreen;
267 }
268
270 bool GetIsAlphaChannel() const
271 {
272 return this->isAlphaChannel;
273 }
274
276 bool GetIsTrans() const
277 {
278 return this->isTrans;
279 }
280
283 bool SetDrawScreen()
284 {
285 if(this->isScreen)
286 {
287 return !DxLib::SetDrawScreen( this->GetHandle() );
288 }
289 return false;
290 }
291 };
292
306 class ImagePack
307 {
308 protected:
309 std::vector<Image*> images;
310 int widthMax;
311 int heightMax;
312 public:
313 ImagePack():
314 widthMax( 0 ),
315 heightMax( 0 )
316 {}
317
319 ImagePack( const char *ファイル名 , int 総コマ数 , int コマ割り横,int コマ割り縦,int コマ幅,int コマ高さ )
320 {
321 ImagePack::Load(ファイル名,総コマ数 , コマ割り横, コマ割り縦 , コマ幅 , コマ高さ );
322
323 int *buf = new int[総コマ数];
324
325 if( DxLib::LoadDivGraph(ファイル名,総コマ数,コマ割り横,コマ割り縦,コマ幅,コマ高さ,buf) == 0 )
326 {
327 for(int i=0;i<総コマ数;i++)
328 {
329 this->Add( new Image(buf[i]) );
330 }
331 }
332
333 delete [] buf;
334 }
335
343 virtual bool Load(const char *ファイル名 , int 総コマ数,int コマ割り横, int コマ割り縦 ,int コマ幅,int コマ高さ )
344 {
345 int *buf = new int[総コマ数];
346
347 if( DxLib::LoadDivGraph(ファイル名,総コマ数,コマ割り横,コマ割り縦,コマ幅,コマ高さ,buf) == 0 )
348 {
349 for(int i=0;i<総コマ数;i++)
350 {
351 this->Add( new Image(buf[i]) );
352 }
353 }
354
355 delete [] buf;
356 return true;
357 }
358
362 virtual bool Load(const char *ファイル名 , const char *拡張子 , int 総コマ数 )
363 {
364 for(int i=0 ; i<総コマ数 ; i++)
365 {
366 char fileBuf[8];
367 sprintf_s( fileBuf , 8 , "%03d." , i );
368
369 std::string fileName = ファイル名;
370 fileName += fileBuf;
371 fileName += 拡張子;
372
373 this->Add( new Image( fileName.c_str() ) );
374 }
375 return true;
376 }
377
380 virtual void Add(Image *追加イメージ)
381 {
382 images.push_back( 追加イメージ );
383
384 this->widthMax = max( this->widthMax , 追加イメージ->GetWidth() );
385 this->heightMax = max( this->heightMax , 追加イメージ->GetHeight() );
386 }
387 virtual void Add(const char *ファイル名)
388 {
389 Add( new Image( ファイル名 ) );
390 }
391
393 virtual void Release()
394 {
395 for( auto it : images)
396 {
397 it->Release();
398 }
399
400 images.clear();
401 }
402
404 int GetSize() const
405 {
406 return images.size();
407 }
408
410 int GetWidth() const
411 {
412 return this->widthMax;
413 }
414
416 int GetHeight() const
417 {
418 return this->heightMax;
419 }
420
421 Image* operator[](int index)
422 {
423 return images[index];
424 }
425 };
426 }
DXFW::ImagePack::ImagePack
ImagePack(const char *ファイル名, int 総コマ数, int コマ割り横, int コマ割り縦, int コマ幅, int コマ高さ)
Definition: Image.h:319
DXFW::ImagePack::GetWidth
int GetWidth() const
最大幅を取得
Definition: Image.h:410
DXFW::ImagePack
複数のImageをまとめるクラス
Definition: Image.h:306
DXFW::Image::GetIsAlphaChannel
bool GetIsAlphaChannel() const
αチャンネルフラグを取得
Definition: Image.h:270
DXFW::Image::Draw
bool Draw(int X座標, int Y座標, bool 反転フラグ=false) const
指定座標に描画
Definition: Image.h:163
DXFW::ImagePack::GetHeight
int GetHeight() const
最大高さを取得
Definition: Image.h:416
DXFW::Image::GetHandle
int GetHandle() const
ハンドルを取得
Definition: Image.h:157
DXFW::Image::DrawRotateAxis
bool DrawRotateAxis(int x, int y, int X軸, int Y軸, double 拡大率, double 角度, bool 反転フラグ=false) const
回転軸、角度、拡大率を指定して描画
Definition: Image.h:203
DXFW::Image::ZMaskPart
bool ZMaskPart(int destX, int destY, int srcX, int srcY, int 幅, int 高さ, ZMaskType Zマスクタイプ, bool 反転フラグ=false) const
Definition: Image.h:237
DXFW::ImagePack::Load
virtual bool Load(const char *ファイル名, const char *拡張子, int 総コマ数)
Definition: Image.h:362
DXFW::Mask
Definition: Mask.h:33
DXFW::ZMaskType
ZMaskType
Zマスクの種類
Definition: Image.h:12
DXFW::ImagePack::GetSize
int GetSize() const
要素数を取得
Definition: Image.h:404
DXFW::Image::GetWidth
int GetWidth() const
幅を取得
Definition: Image.h:252
DXFW::ImagePack::Load
virtual bool Load(const char *ファイル名, int 総コマ数, int コマ割り横, int コマ割り縦, int コマ幅, int コマ高さ)
Definition: Image.h:343
DXFW::Image::DrawRotate
bool DrawRotate(int x, int y, double 拡大率, double 角度, bool 反転フラグ=false) const
角度、拡大率を指定して描画
Definition: Image.h:193
DXFW::Image::DrawPart
bool DrawPart(int destX, int destY, int srcX, int srcY, int 幅, int 高さ, bool 反転フラグ) const
イメージの一部を指定して描画
Definition: Image.h:233
DXFW::Image
画像クラス。ロードしたファイルの描画等。
Definition: Image.h:51
DXFW::Image::Release
bool Release()
イメージをメモリから開放
Definition: Image.h:118
DXFW::RGBA
RGBA
説明
Definition: Image.h:19
DXFW::Image::Make
int Make(int width, int 高さ, bool isTrans=true, bool isScreen=false, bool isAlphaChannel=true)
空のイメージを作成
Definition: Image.h:124
DXFW::Image::GetIsTrans
bool GetIsTrans() const
透過フラグを取得
Definition: Image.h:276
DXFW::Image::Load
bool Load(const char *ファイル名)
画像をメモリへ読み込む
Definition: Image.h:106
DXFW::Image::GetIsScreen
bool GetIsScreen() const
説明
Definition: Image.h:264
DXFW::Image::Copy
int Copy(const Image &img, int x, int y, int width, int 高さ)
元イメージの一部をコピーして、別イメージを作成
Definition: Image.h:145
DXFW::Image::DrawModify
bool DrawModify(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) const
四角形に変形描画
Definition: Image.h:223
DXFW::Image::DrawExtend
bool DrawExtend(int X座標A, int Y座標A, int X座標B, int Y座標B) const
指定矩形内に描画
Definition: Image.h:183
DXFW::Anime
まとめたImageをコマ送りアニメーションとして扱うクラス
Definition: Anime.h:38
DXFW::Image::Image
Image(int 幅, int 高さ, bool 透過フラグ, bool スクリーン用フラグ, bool αチャンネルフラグ)
空のイメージを作成
Definition: Image.h:89
DXFW::Image::DrawRotateAxis
bool DrawRotateAxis(int x, int y, int X軸, int Y軸, double 拡大率X, double 拡大率Y, double 角度, bool 反転フラグ=false) const
回転軸、角度、拡大率を縦横別に指定して描画
Definition: Image.h:213
DXFW::ImagePack::Release
virtual void Release()
イメージをメモリから開放
Definition: Image.h:393
DXFW::Image::Image
Image(const char *ファイル名)
summary&gt;画像をメモリへ読み込む
Definition: Image.h:83
DXFW::Image::GetHeight
int GetHeight() const
高さを取得
Definition: Image.h:258
DXFW::ClipType
ClipType
説明
Definition: Image.h:32
DXFW::ImagePack::ImagePack
ImagePack()
summary&gt;１つの画像を分割して読み込む
Definition: Image.h:313