From fbb9e9494f6acefec603aa282d54786d9f69235d Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Tue, 29 Jan 2002 08:19:03 +0000 Subject: [PATCH] new theme graphics and new texture loading algorithm --- stepmania/src/RageBitmapTexture.cpp | 45 ++++++++++++++++++----- stepmania/src/RageTexture.cpp | 23 +++++------- stepmania/src/RageTexture.h | 20 ++++++---- stepmania/src/smpackage/smpackage.clw | 2 +- stepmania/src/smpackage/smpackage.opt | Bin 53760 -> 53760 bytes stepmania/src/smpackage/smpackageDlg.cpp | 26 +++++++++++++ stepmania/src/smpackage/smpackageDlg.h | 1 + 7 files changed, 85 insertions(+), 32 deletions(-) diff --git a/stepmania/src/RageBitmapTexture.cpp b/stepmania/src/RageBitmapTexture.cpp index d26fa58a81..bf5f5ac575 100644 --- a/stepmania/src/RageBitmapTexture.cpp +++ b/stepmania/src/RageBitmapTexture.cpp @@ -91,9 +91,25 @@ void RageBitmapTexture::Create() } - - // load texture and get image info + ///////////////////// + // Figure out whether the texture can fit into texture memory unscaled + ///////////////////// + bool bScaleImageToTextureSize; + D3DXIMAGE_INFO ddii; + if( FAILED( hr = D3DXGetImageInfoFromFile( + m_sFilePath, + &ddii ) ) ) + { + RageErrorHr( ssprintf("D3DXGetImageInfoFromFile() failed for file '%s'.", m_sFilePath), hr ); + } + + D3DCAPS8 caps; + m_pd3dDevice->GetDeviceCaps( &caps ); + + bScaleImageToTextureSize = ddii.Width > caps.MaxTextureWidth + || ddii.Height > caps.MaxTextureHeight; + if( FAILED( hr = D3DXCreateTextureFromFileEx( m_pd3dDevice, // device @@ -103,8 +119,8 @@ void RageBitmapTexture::Create() 0, // usage (is a render target?) fmtTexture, // our preferred texture format D3DPOOL_MANAGED, // which memory pool - D3DX_FILTER_BOX, // filter - D3DX_FILTER_BOX, // mip filter + bScaleImageToTextureSize ? D3DX_FILTER_BOX : D3DX_FILTER_NONE, // filter + D3DX_DEFAULT, // mip filter 0, // no color key &ddii, // struct to fill with source image info NULL, // no palette @@ -113,15 +129,13 @@ void RageBitmapTexture::Create() RageErrorHr( ssprintf("D3DXCreateTextureFromFileEx() failed for file '%s'.", m_sFilePath), hr ); } - // save the source image's width and height + + ///////////////////// + // Save information about the texture + ///////////////////// m_uSourceWidth = ddii.Width; m_uSourceHeight= ddii.Height; - - //RageLog( "info.Width = %d, info.Height = %d, devCaps.MaxTextureWidth = %d, devCaps.MaxTextureHeight = %d", - // info.Width, info.Height, devCaps.MaxTextureWidth, devCaps.MaxTextureHeight ); - - D3DSURFACE_DESC ddsd; if ( FAILED( hr = m_pd3dTexture->GetLevelDesc( 0, &ddsd ) ) ) RageErrorHr( "Could not get level Description of D3DX texture!", hr ); @@ -130,5 +144,16 @@ void RageBitmapTexture::Create() m_uTextureWidth = ddsd.Width; m_uTextureHeight = ddsd.Height; m_TextureFormat = ddsd.Format; + + if( bScaleImageToTextureSize ) + { + m_uImageWidth = m_uTextureWidth; + m_uImageHeight = m_uTextureHeight; + } + else + { + m_uImageWidth = m_uSourceWidth; + m_uImageHeight = m_uSourceHeight; + } } diff --git a/stepmania/src/RageTexture.cpp b/stepmania/src/RageTexture.cpp index bf0132b95e..f313794d6f 100644 --- a/stepmania/src/RageTexture.cpp +++ b/stepmania/src/RageTexture.cpp @@ -20,15 +20,7 @@ //----------------------------------------------------------------------------- // RageTexture constructor //----------------------------------------------------------------------------- -RageTexture::RageTexture( LPRageScreen pScreen, CString sFilePath ) : - m_uSourceWidth( 0 ), - m_uSourceHeight( 0 ), - m_uTextureWidth( 0 ), - m_uTextureHeight( 0 ), - m_uFramesWide( 1 ), - m_uFramesHigh( 1 ), - m_uSourceFrameWidth( 0 ), - m_uSourceFrameHeight( 0 ) +RageTexture::RageTexture( LPRageScreen pScreen, CString sFilePath ) { // RageLog( "RageTexture::RageTexture()" ); @@ -41,7 +33,10 @@ RageTexture::RageTexture( LPRageScreen pScreen, CString sFilePath ) : // m_pd3dTexture = NULL; m_iRefCount = 1; - + m_uSourceWidth = m_uSourceHeight = 0; + m_uTextureWidth = m_uTextureHeight = 0; + m_uImageWidth = m_uImageHeight = 0; + m_uFramesWide = m_uFramesHigh = 1; } RageTexture::~RageTexture() @@ -61,10 +56,10 @@ void RageTexture::CreateFrameRects() { for( UINT i=0; iw>m*A(J*2vZyg_77=^Hyjel)0V;8qd6ET$6$5LC6vDVK?j)yCC7$Zql)7lp~2Tt4%2xMk*~hGnLfL&P@=ioHj52-sbBm^MW` zX2K!a$G9nnjcM|Ye4)t_QKxY$Y9L0@6gC#ZCar2>#ugNl6~sPG+NV%&pu)fa!a6|A zqk~{?VP%AigXBOs2^i)RLE#Pr zFq&cV{C!)pK=L3A(ht)EVpHD@oA>V5XQZQ_F9ZGh8SG;O%`iFpVE$%dvA5`H2N)$Y E0U~F#3IG5A literal 53760 zcmeHQ4RBM}mA>ab{wy$o-~b7vc`^SD7Pf3K5X>S=GAQvMmNA5w7+HF@Rb)N&J&C{0 zZZeq`CfStD9}J`k1=0{mDCN(D@DGJf$+j%B)9q|vOKF>B+60Zeo z3&SMS&GgVZDrbI!Sc8hmNRB z&Q5mC&+Hm+$?_Glz~?wt6`z}e)C;LM5_{%-k@_L!AlZ=mBeCb4i|2tz_aNaCAcK+a zMH+&Xhjbqj(;J58;Yjx*J%BU@<(j=rpq#`5-QZZ5q64RT4=TfApNYjv}BRz^V1E~yYCKA(|g=Z&HIg$&> zjpRY9K$?v-2Z`x1dK|ASk*biYk!p}?k>(=RA^DJ)-aI@vAk9Zwfb;~?LZl~=8j%(u zF})@{FGlhsH6sO(f=C)t3sNf*)BCbZ9ntZK5fx`1!LvbDV9z}-Lvh9MF|u`&t(@EW zq3gMACxFe1>&?gB4YGuoB#O2O;QUpzWel%l30rWz?#?Qqi8agCE*nR8dg=EmW7uNF zQjWdrWEu9a;nkg&LD;{7)!6r>r~MCL-6Z?>;8PFbT$vT_rVJz$*msrn%}P(&7|N8A z{R3K$*(1knkNN{k{H>b9HNDY{Y0-9nB;-%OG6Ic4DRpHJno+<8Y%4=izY%B)E!AfB zsD*{0sMFGKOkMKU;z6ybY*Z)`2;-HSZ^nZDmgV-g{9IeLwyYu)*1VR;k*>sNkkHGu zxx#+abm{R(tgJZ66_vSsT+11aCht1Z?z+RRxwc$eoo4EBBcO@u{6DNP3o+$gAa&i2$L8!pC%t7UgVt_0Gyl*6ow7O5gM@ zLtK<=t6ve-$_jIBb2NWYGuY(I#B;E><=VXM(XiI8MPmL~NRQkk53pI{y_jZ{Rp;6& z{bsDD`5RgwmNw^vC2r{)M|zviQR8;~GnMoqxVsrb!Yt)}Q%gLwGM78#59|0O8bU@a z?hhv?5S;H~R!UgPT{(Mtn#K80i;|{Kn_i-AmmY~3df0lNlTpdy+2gEvd}4Dv7SkgW zi;7DejuOYzqEey29;>UV((9{l^3_z&_Du|j%viI&9CarKG1#Kg zQpYq@!-vQ1kz7p~?2&0DW-*Ja$>a9cH&uCjK3vihwO}Zg>~k89P7IA1D60h%R&iFl zJe6XC+|1pWqul9AJ(9aJhV?bNb;8^#UB68kzN6i&>r9%7<(*;aCfDrEEB@9&b+gLx z702HgcC*>Yx48@rAAF=$Z8r2}rly7>ExOu*uLHZ?Zky3oJhLVqi^gN>{7@vQFPkw5 z@7S;~3BGXR;h1UNOT9d_<(gWc7OI+I=*D<+!bH`fF7q1^>;yU6j7d>Ln~A4pJ-C9M z+hXnEnYLy_wKvvjVGX~osecF9HywwWCdy>2FLfftX%i{z!9)g;S@)hM`^gbF0|ZrBZF z8ke6Udtome6Z}s|2XufY>i?8%gpF{niR*tr*1}rIZRY&X$QIZFZ?|&(EIA5C;lVb} zpCiZNI8+P%pUDY00iTQc{DK^UL-3hs@0VmNY=se`|9>T~!|U*KG5+&p7wm!$g#N#g zx8N;UAm)FOtcUgRLV)*wiEM}Muu|0jE!hb>;Xj4`N923(JvbxAbD123gP;li_v8Q^ zfPWX``Iu~m%`jBh>k8Qed*EroUnTosA6ygse~|sKA6^pm|3tnI--jE*p8rMG!8-Vz zu;2fXV{i*ql&JOPgg{vlX|$7-RU50B!}A^1^HhR30~ z-2S8CJRT!`$Un};GY0TKc=WX3CxAi~I;@WCPlC&E1v*9jVz>k!!EXgW87|^c#Pk#G z&4jD)DeM#NxqxDs!^V@4&w;+QFD({)74)Hf=qAx#EqsWFUDR&?pg@NU{YL0bd(*Q* ze-T{3qmPh31-)o5>K5Z!4A<~DBlu>xfyW;OAB0Xk)(O4^KF8x5f^UQCczid)?Gb`i zbQS%%$@wrGr^o5g80XvJ1U*6jSLmDYGF?x9CHQ6V0)3Gl7W@i$o<2{9>Ae24@EU!S z7Krv%!AW|OMuh%z@E!Uc8WHm6;m7pH^an!z_pq9-rmKYf1vo`d(ftN*e+?X>hv>y` za{fhlkG@Ce2>HwKK7F5lGs@+!!cMxAekk~Lu#4`Z&x`r5hhy{@T_DfYI3w}g@L}Q}8J+P1NqYYyG``{=&NaR}21^aGhSK+l4-Uo9Ku1H-bM87w82V z75W$88ofq0%*Xx{@286}TbZpaY2f^?VYD(@sTT6zL4{JG{94HW0ENmF<%Hlrfv+oe zWuxH#2;-IUN~hre3{w@S@|fVS!6;>v@@>IihcU_+Ww_|?26z;YQdZ0D(+RICuPW+X z{LHH>$5Kds_U1w6D@v86@<- zMjePisY3rDdX}6eqw)J{>8o@UjDq?Q=O3p1mHx^N(Oy2?Lbi|+(cUO}m>ed6X+VUh8#-j z@4~k)`~APEG%sh?sXPW_$RaHuE$~-j0R{h}GrdQ6-7UZP?9C=at+7b_FQ7^MFBASK z@xLy(VmE-7#Q(a$p%VXNh_1x{?i9$B_#gYdBk@0p|4IB$;(v&LB>tWu@jr?GN&HXZ ze-i(*zzX>(Eg&txEzl2lFIH7PhFe>2x8qOZe{4gb-2a!_e8|AP+w4D-_@Bi8*xp6C z|Br9FmHYp`w2h1s|C9LNX(IRk$^CzF|DW9d$MH|O|4;7!ll%YV{y&a*$g{M7v;en2 zCjaaC=#d;jzhveYeY=v6{>Lm%faQJMGymg4Clkea~Ba*gK19fX*w}9@_%h)BY!C=%3xXn_@%f zo;#iY->{C7_E*sVJLUVGlW@On2x-fD&+ydL%}oCsEc^!50Q0QYOiS9`{Q=y|In~^d zR1-$h!P@L&x%ygd^-uHY?e0#dMl9Wa=yIv0dK)!gHkBcw#8Uuu|999X5H?|$kLn1 zV9KPk{_XJBF3#7||6BThV}OU0U$JoF&g2#^{l9OGtB}d1S^9q`!iGry@8o_f>HjVL zzoq}T^#A7gqxAol{@>F7Tl#~g|FZ>_V=HOJfF z!H{6{z177IbzZgCRpa)kR@^zY&Qs}e`aAm=p8LGIo=6Gv&6&}t|!Iy}gm)_Mi7V$Pw)C~IbBB6ke5hz7R zDfRp;>Sa!mZ;g$3&tgngvs=S4Vb2G} zw37qq0)7I<2Tm-2*@hmECN+BZ%X2?AzY8v!MNbK87(+CVxZGM)iv+buUVIF zqm2K^@jV&;k^NGXMOr{w;Qzk`IR1BkY9riDcwDZK+zj`1U#ELXVz1;g9NkL?x!65c zhKc?JGAPhDc!p`D06&&-=nuV1@_Q7(GSNz7dC5Hc%1|`FE4bJVvex}P*f_cyDU&4| z>~23{7BI|~f(ZdrYjJEf1&t+}?lBhD1I2#9<(LCvs=W;`u~!-j$96X+yBmPRDi5`? zJK59*qnbB@*=8dCuon|lWYfI|bzPXZ#_)&TAtRe6>pYn(D4QB<&>4^EN?uzi_-y=6{j-Uu6Clng0dxzC`{N zng50T-jzjKKw99dX914?(KIh$oCTzzP;63}T$`D*chU`2Aa%)&Z{6c&68~#q9>Ws< z!+ner{}bCC(|}fq|H=F>GXKlnB(j$AA7%VU8UIn{f0p^5W&UTG|C!^}GXJy8|19%A zfAx?VIbvynFW&+#62^FkCLRqKby35Jk1Dyt_>XrSfABFjtz`T`H}=^~;uvv}#auM* zc*6H4<3HN4W+sp_Q-k&Frs!YCh?8-Q{-|Nh%NW|>&Pv{0#9w?Wt^YggEwlEW#(zw2 z1u*_2!(=-<6Hdjhuvrlf`oeniO#m=FlZq0VtS|B3Zg#3N`^f#Da{p&wMH;Lt_kUJS zY>vlzk`77YzY_nI_%Hwc{sCDFYazFp^FJe7U<(_c+c+=tf6M&eGXJ;C z|IObAGXJ;C|1I->%lzNmKYapSL)MT(H5R`MfU@8Jn@aO?W}V8*N&dE%Cusp`fxiL^ z*f9UMRYu^cH-T9>EcBkChYMWnKJ&`%hj(-N-Eu?oFX0k=b3AjO+mAsNS41_nDrEY@ zq1H${`t-7Tj4-<5@j=c&Kr>CXA*6>BvDCN_-M5eDdLx)>rBzcshM^l=@*qlvc*9|> z)gM+_!U`iEV2-m~{sPMHa~g(!g<7u1BSBMTzO`CV3v!L`qQ=mQuzSYO85e;GxCEfEHQ3@lMyZCYRnm%f71do1ZZ42syL<}j4y zRO@P$)~*{Xc#Sc5cX+iPK?mYkC=&NKhtaIu=a?&vMWrEpwC<1@)y+`)cwa^NQ0Btj zsu`*~qg~db${?x(eiPZ zqvU=j@kVgGXzP`UwWL<~u_K}NcclIJpej8W$En}a#M3Aog0V^iS}<;8kYggN;{&;A z=HN;RYkZ{#%=SyeszL!nH}#g7>U!jnTP@3Udm;6i?~euAiui?tUlj9;5<+lkkv_oY zmI!y51{BKupA!F*_@Bi8`0sa#|80iNFjV9AxI*^89(Y>tSIIuu2iF8I^MA|y-!lKV z%>T{b7c&31%>OO(f6M&e_)|+3X#r`0E*4-B6nl|beRlOy$oei4*CYfv@D3#hjy}tP zibM%sC36|G4}rbKM|Ki2j?5jfkIe0xlt&LIAVLgSUecg8yj5HrZ!epxEg(RNcDBDnmUi&Ra-mu zTMnnkQR*yq6%>_LOfD!Yau*gjD~ies3JaZuu4#o8)7+jZe@n>3WS?v#=^HEA^=o*K z(LqFcY7qORe_@lI#c^Ch>W^dMXS__55%xwF4bcd+g_de*mn-DbuEw6qHQ! zl;eYORTPw0luTg{##vZc;wo}@9JhHeY@H&mN!H^-aj`#V{e>UQY8=59BsJ}fmx*$3 znvGb}+%M{REWp+oy@k)B0*NKyNsj_4<3EO57vVkg60%Q9G|o4o3o zG-dv0ng4kM9P;zuo5#r}*aV*hIe(JuhTTvm@TpT|FYJY5g8vEWfDX_^{hyMJuo2ER z@%j?~llb2vSY40n!NL6d^WjlEIs`uo%J4Wem#-J;|1JH$rT@3||K{%l>HjVLzoq}T Q_1jB+N()E}q+8(s06pwFwEzGB diff --git a/stepmania/src/smpackage/smpackageDlg.cpp b/stepmania/src/smpackage/smpackageDlg.cpp index 3f98d56dff..26bc793772 100644 --- a/stepmania/src/smpackage/smpackageDlg.cpp +++ b/stepmania/src/smpackage/smpackageDlg.cpp @@ -40,6 +40,7 @@ BEGIN_MESSAGE_MAP(CSmpackageDlg, CDialog) ON_WM_QUERYDRAGICON() ON_LBN_SELCHANGE(IDC_LIST_SONGS, OnSelchangeListSongs) ON_BN_CLICKED(IDC_BUTTON_EXPORT, OnButtonExport) + ON_BN_CLICKED(IDC_BUTTON_PLAY, OnButtonPlay) //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -234,3 +235,28 @@ void CSmpackageDlg::OnButtonExport() +void CSmpackageDlg::OnButtonPlay() +{ + // TODO: Add your control notification handler code here + + PROCESS_INFORMATION pi; + STARTUPINFO si; + ZeroMemory( &si, sizeof(si) ); + + CreateProcess( + NULL, // pointer to name of executable module + "stepmania.exe", // pointer to command line string + NULL, // process security attributes + NULL, // thread security attributes + false, // handle inheritance flag + 0, // creation flags + NULL, // pointer to new environment block + NULL, // pointer to current directory name + &si, // pointer to STARTUPINFO + &pi // pointer to PROCESS_INFORMATION + ); + +} + + + diff --git a/stepmania/src/smpackage/smpackageDlg.h b/stepmania/src/smpackage/smpackageDlg.h index 1e196b5ae8..9788b18c44 100644 --- a/stepmania/src/smpackage/smpackageDlg.h +++ b/stepmania/src/smpackage/smpackageDlg.h @@ -47,6 +47,7 @@ protected: afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnSelchangeListSongs(); afx_msg void OnButtonExport(); + afx_msg void OnButtonPlay(); //}}AFX_MSG DECLARE_MESSAGE_MAP() };