SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送
メインページ   名前空間一覧   クラス階層   構成   ファイル一覧   名前空間メンバ   構成メンバ   ファイルメンバ  

dKingyoDraw2D_DxLib.h

解説を見る。
00001 
00002 
00003 #ifndef dKingyoDraw2D_DxLib__
00004 #define dKingyoDraw2D_DxLib__
00005 //#undef MB
00006 //#include "DxLibSetup/DxLibSetup.h"
00007 #include "DxLib.h"
00008 #include "dKingyoDraw2D.h"
00009 #include "dKingyoMemoryManager.h"
00010 #include "AllLoad.h"
00011 #include "dkutilTL.h"
00012 
00013 namespace dkutil{
00014     namespace dkingyoGM{
00015         namespace dxlib{//Begin dxlib namespace
00016 
00017 
00018 
00019 
00020 //**********************************************************
00021 // Global Function
00022 
00023 extern void DrawGraphArgVoidPointer(void *);
00024 extern void DrawExtendGraphArgVoidPointer(void *);
00025 extern void DrawTurnGraphArgVoidPointer(void *);
00026 extern void DrawRotaGraphArgVoidPointer(void *);
00027 extern void DrawRotaGraph2ArgVoidPointer(void *);
00028 extern void DrawModiGraphArgVoidPointer(void *);
00029 extern void DrawChipMapArgVoidPointer(void *);
00030 extern void DrawStringArgVoidPointer(void *);
00031 extern void DrawFigure(DXLIB_GRAPH_DATA);
00032 
00033 
00034 
00035 //**********************************************************
00036 // Global variable
00037 
00038 //ジャンプテーブル
00039 extern void (*DrawTable[DRAW2D_TYPE_NUM+1])(void*);
00040 
00041 
00042 class OnlyFor_dKingyoDraw2DDrawQueue : 
00043 public dkutil::DTL::basic_vector<DKINGYO_DRAW_2D_DATA *>
00044 {
00045 protected:
00046 public:
00047     OnlyFor_dKingyoDraw2DDrawQueue(){
00048     }
00049     virtual int sort(){
00050         draw_queue_quicksort(count,t);
00051         return 0;
00052     }
00053 };
00054 
00055 inline void DxLibDrawGraph(DRAWGRAPHDATA& get){
00056     ::DrawGraph(get.x1,get.y1,get.handle,get.trans_flag);
00057 }
00058 
00059 
00060 inline void DxLibDrawExtendGraph(DRAWEXTENDGRAPHDATA& get){
00061     ::DrawExtendGraph(
00062         get.x1,get.y1,
00063         get.x2,get.y2,
00064         get.handle,
00065         get.trans_flag
00066         );
00067 }
00068 
00069 inline void DxLibDrawTurnGraph(DRAWTURNGRAPHDATA& g){
00070     ::DrawTurnGraph(g.x1,g.y1,g.handle,g.trans_flag);
00071 }
00072 inline void DxLibDrawRotaGraph(DRAWROTAGRAPHDATA& g){
00073     ::DrawRotaGraph(g.x1,g.y1,g.extend_rate,g.angle,g.handle,g.trans_flag,g.turn_flag);
00074 }
00075 inline void DxLibDrawRotaGraph2(DRAWROTAGRAPH2DATA& g){
00076     ::DrawRotaGraph2(
00077         g.x1,g.y1,
00078         g.cx,g.cy,
00079         g.extend_rate,g.angle,
00080         g.handle,
00081         g.trans_flag,g.turn_flag
00082     );
00083 }
00084 inline void DxLibDrawModiGraph(DRAWMODIGRAPHDATA& g){
00085     ::DrawModiGraph(
00086         g.x1,g.y1,g.x2,g.y2,g.x3,g.y3,g.x4,g.y4,g.handle,g.trans_flag
00087     );
00088 }
00089 inline void DxLibDrawChipMap(DRAWCHIPMAPDATA& g){
00090     ::DrawChipMap(
00091         g.MapWidth,g.MapHeight,
00092         g.MapData,g.ChipTypeNum,
00093         g.ChipGrHandle,g.TransFlag,
00094         g.MapDrawPointX,g.MapDrawPointY,
00095         g.MapDrawWidth,g.MapDrawHeight,
00096         g.ScreenX,g.ScreenY
00097     ) ;
00098 }
00099 
00100     //enu2DLINE,//ライン(線 //DxLibの場合はこれ以降はif,switchで解決。ジャンプテーブルめんどくせぇ
00101     //enu2DBOX,//箱(矩形
00102     //enu2DCIRCLE,//円(正円
00103     //enu2DOVAL,//楕円
00104     //enu2DTRIANGLE,//三角
00105     //enu2DPIXEL,//ドット
00106 //auto的変数。
00107         //素直にスイッチでやれよ!って言われてもTT
00108         /*auto void (*ddunion[DRAW2D_TYPE_NUM+1])={
00109             (void *)&get->DrawGraph,
00110             (void *)&get->DrawGraph,
00111             (void *)&get->DrawRotaGraph,
00112             (void *)&get->DrawRotaGraph2,
00113             (void *)&get->DrawExtendGraph,
00114             (void *)&get->DrawModiGraph,
00115             (void *)&get->DrawChipMap,
00116             (void *)&get->DrawString,
00117             NULL
00118         };
00119         DrawTable[m_DrawType]((ddunion[m_DrawType]));
00120         */
00121 //**********************************************************
00122 //DxLib Draw 2d Wrapper
00123 class dKingyoDraw2D_DxLib : public IdKingyoDraw2D<DXLIB_GRAPH_DATA>
00124 {
00125 protected:
00126     
00127 
00128 public:
00129     dKingyoDraw2D_DxLib(){}
00130     virtual ~dKingyoDraw2D_DxLib(){}
00131     virtual int Draw2D(DKINGYO_DRAW_2D_DATA *get){
00132         switch(get->DrawTypeFlag){
00133         case NULL://NULL=そのまんま描画
00134         case enu2DNONE://そのまんま
00135             DxLibDrawGraph(get->DrawGraph);
00136             break;
00137         case    enu2DROTATE://回転(拡大縮小もできる)
00138             DxLibDrawRotaGraph(get->DrawRotaGraph);
00139             break;
00140         case enu2DROTATE2://回転の中心も変えれる回転(拡大縮小もできる)
00141             DxLibDrawRotaGraph2(get->DrawRotaGraph2);
00142             break;
00143         case enu2DTURN://左右反転
00144             DxLibDrawTurnGraph(get->DrawTurnGraph);
00145             break;
00146         case enu2DEXTEND://拡大縮小(DrawExtendGraph)
00147             DxLibDrawExtendGraph(get->DrawExtendGraph);
00148             break;
00149         case enu2DMODI://自由変形
00150             DxLibDrawModiGraph(get->DrawModiGraph);
00151             break;
00152         case enu2DCHIPMAP://マップチップ
00153             DxLibDrawChipMap(get->DrawChipMap);
00154             break;
00155         case enu2DTEXT://テキスト
00156             DrawStringArgVoidPointer((void *)&get->DrawString);
00157             break;
00158         //case enu2DLINE://ライン(線 //DxLibの場合はこれ以降はif,switchで解決。ジャンプテーブルめんどくせぇ
00159         //case enu2DBOX://箱(矩形
00160         //case enu2DCIRCLE://円(正円
00161         //case enu2DOVAL://楕円
00162         //case enu2DTRIANGLE://三角
00163         //case enu2DPIXEL://ドット
00164         default:
00165             DrawFigure(get);
00166             break;
00167         }
00168         
00169         return 0;
00170     }
00171     virtual int Draw2DPQ(DKINGYO_DRAW_2D_DATA *get)//PQ = Priority Queue
00172         {return DKINGYO_NOT_MOUNTED;}
00173 
00174 };
00175 
00176 //**********************************************************
00177 //DxLib Text Draw function wrapper
00178 class dKingyoDrawText_DxLib : public IdKingyoDrawText< DXLIB_GRAPH_DATA >{
00179 public:
00180     dKingyoDrawText_DxLib(){}
00181     virtual ~dKingyoDrawText_DxLib(){}
00182     virtual int DrawText(DXLIB_GRAPH_DATA get){
00183         DRAWSTRINGDATA &r=get->DrawString;
00184         ::DrawString(r.x,r.y,r.szStrPointer,r.Color);
00185     }
00186     virtual int DrawTextPQ(DXLIB_GRAPH_DATA get){
00187         return DKINGYO_NOT_MOUNTED;//定義されていない
00188     }
00189 };
00190 
00191 class dKingyoDrawFigure_DxLib : public IdKingyoDrawFigure<DXLIB_GRAPH_DATA>{
00192 public:
00193     dKingyoDrawFigure_DxLib(){}
00194     virtual ~dKingyoDrawFigure_DxLib(){}
00195     virtual int DrawFigure(DXLIB_GRAPH_DATA get){
00196         DrawFigure(get);
00197     }
00198     virtual int DrawFigurePQ(DXLIB_GRAPH_DATA get){return DKINGYO_NOT_MOUNTED;}
00199 };
00200 
00201 //**********************************************************
00202 //DxLib Draw Manager
00203 class dKingyoDrawManager_DxLib : public IdKingyoDrawManager<DXLIB_GRAPH_DATA >
00204 {
00205     //このクラスはステートタイプです。なので一回ブレンドモードとかを設定したら
00206     //そのままその設定が引き継がれます。
00207     //(しかし、実際はソートしてどーたらこうたらの関数を使うので、ほぼ意味をなさない^^;
00208 protected:
00209     OnlyFor_dKingyoDraw2DDrawQueue DrawQueue;//ドローキュー
00210     DKINGYO_DRAW_OPTION option;
00211     //各描画オブジェクト
00212     dKingyoDrawText_DxLib m_text;
00213     dKingyoDraw2D_DxLib m_2D;
00214     dKingyoDrawFigure_DxLib m_figure;
00215     //DK_DRAW2D_GP m_func;//総合描画関数。
00216 public:
00217     dKingyoDrawManager_DxLib(){
00218         memset((void *)&option,NULL,sizeof(option));
00219 
00220         DrawQueue.resize(100);//100個くらいのDrawQueue領域を確保しておく
00221     }
00222     virtual ~dKingyoDrawManager_DxLib(){}
00223     virtual int Draw2D(DXLIB_GRAPH_DATA get){return m_2D.Draw2D(get);}
00224     virtual int Draw3D(DXLIB_GRAPH_DATA){return DKINGYO_NOT_MOUNTED;}//実装されてない
00225     virtual int DrawText(DXLIB_GRAPH_DATA get){return m_text.DrawText(get);}
00226     virtual int DrawFigure(DXLIB_GRAPH_DATA get){return m_figure.DrawFigure(get);}
00227     virtual int SetDrawBlend(int get,int percent){
00228         switch(get){
00229         case NULL:
00230         case enu2DNOBLEND:
00231             ::SetDrawBlendMode(DX_BLENDMODE_NOBLEND,NULL);//ノーブレンド(デフォルト)
00232             break;
00233         case    enu2DBLENDADD:
00234             ::SetDrawBlendMode(DX_BLENDMODE_ADD,percent);//加算ブレンド
00235             break;
00236         case enu2DBLENDALPHA:
00237             ::SetDrawBlendMode(DX_BLENDMODE_ALPHA,percent);//αブレンド
00238             break;
00239         case enu2DBLENDSUB:
00240             ::SetDrawBlendMode(DX_BLENDMODE_SUB,percent);//減算ブレンド
00241             break;
00242         default:
00243             //何も出来なかったらこれを返す
00244             return -1;
00245         }
00246         option.m_DrawBlend=get;//しっかり保存します
00247         option.m_BlendPercent=percent;//ほぞ〜ん!
00248         return 0;//正常終了
00249     }
00250 
00251     virtual int SetDrawOption(int get ){
00252         switch(get){
00253         case enu2DOPTION_NEAREST://NEAREST NEIVER で描画?
00254             ::SetDrawMode(DX_DRAWMODE_NEAREST);
00255             break;
00256         case enu2DOPTION_BILINEAR:
00257             ::SetDrawMode(DX_DRAWMODE_BILINEAR);
00258             break;
00259         default:
00260             return -1;
00261         }
00262         return 0;
00263     }
00264     virtual int SetDrawBright(int r,int g,int b){
00265         return ::SetDrawBright(r,g,b);
00266     }
00267 
00268     virtual int SetDrawType(int get){
00269         option.m_DrawType = get;
00270         return 0;
00271     }
00272     virtual int sort()//描画キューをソートします。
00273     {
00274         return DrawQueue.sort();
00275     }
00276     virtual int SortDraw();//ソートして描画します。
00277 
00278     virtual int UserGivesDefinitionDraw(DXLIB_GRAPH_DATA)//ユーザーが定義する描画関数
00279         {return DKINGYO_NOT_MOUNTED;}
00280     virtual int Display()//いわいるFlipです。
00281     {
00282         return ScreenFlip();
00283         //return ::DxLibSetupScreenFlipOrCopy();//(DxLibSetupの関数
00284     }
00285 };
00286 
00287 
00288 }//end of dxlib namespace
00289 }//end of dkingyoGM
00290 }//end of dkutil
00291 #endif
00292 
00293 
00294 
00295 
00296 
00297 
00298         /*
00299 extern int DGraph(DKINGYO_DRAW_2D_DATA *);
00300 extern int DRotate(DKINGYO_DRAW_2D_DATA *);
00301 extern int DTurn(DKINGYO_DRAW_2D_DATA *);
00302 extern int DExtend(DKINGYO_DRAW_2D_DATA *);
00303 extern int DModi(DKINGYO_DRAW_2D_DATA *);
00304 extern int DChipmap(DKINGYO_DRAW_2D_DATA *)
00305     virtual int SetDrawBlend(int get,int percent){
00306         switch(get){
00307         case NULL:
00308         case enu2DNOBLEND:
00309             ::SetDrawBlendMode(DX_BLENDMODE_NOBLEND,NULL);//ノーブレンド(デフォルト)
00310             break;
00311         case    enu2DBLENDADD:
00312             ::SetDrawBlendMode(DX_BLENDMODE_ADD,percent);//加算ブレンド
00313             break;
00314         case enu2DBLENDALPHA:
00315             ::SetDrawBlendMode(DX_BLENDMODE_ALPHA,percent);//αブレンド
00316             break;
00317         case enu2DBLENDSUB:
00318             ::SetDrawBlendMode(DX_BLENDMODE_SUB,percent);//減算ブレンド
00319             break;
00320         default:
00321             //何も出来なかったらこれを返す
00322             return -1;
00323         }
00324         return 0;//正常終了
00325     }
00326     switch(get){
00327         case NULL:
00328         case enu2DNONE:
00329             
00330             enu2DROTATE,//回転(拡大縮小もできる)
00331             enu2DROTATE2,//回転の中心も変えれる回転(拡大縮小もできる)
00332             enu2DTURN,//左右反転
00333             enu2DEXTEND,//拡大縮小(DrawExtendGraph)
00334             enu2DMODI,//自由変形
00335             enu2DCHIPMAP,//マップチップ
00336     */

dKingyoUtilClass (dkutil)に対してMon Jun 9 01:32:40 2003に生成されました。 doxygen1.3