home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 March / VPR9703A.ISO / FFILLY / YunPhoto / fgv03.tfy < prev    next >
Text File  |  1997-01-06  |  8KB  |  350 lines

  1. //Filly Graphics Viewer Ver.0.3-
  2. #info INAM "Filly Graphics Viewer Ver.0.3-"
  3. #info ISBJ "グラフィック(BMPファイル)がメニュー形式で閲覧できます。"
  4. #info IART "POCOPEN,GGB02243@niftyserve.or.jp"
  5. #info ICMT "バージョン0.3"
  6. #info ICOP "POCOPEN,GGB02243@niftyserve.or.jp"
  7. #info IENG "POCOPEN,GGB02243@niftyserve.or.jp"
  8. #info IGNR "graphic viewer"
  9. #info IKEY "FGV; POCOPEN"
  10. #info GENR "graphic; utility"
  11. #info MDFY "Ask me"
  12. #info TRNS "Ask me"
  13. #info JINT "Ask me"
  14. #info VIDO "800x600; 65536"
  15.  
  16. #define ON 1
  17. #define OFF 0
  18. #define NO_EXIST 0
  19. #define DX 2
  20. #define DY 2
  21. #define WIDTH 120
  22. #define HEIGHT 90
  23.  
  24. int checkRect();
  25. int changeBtn();
  26. int showPic();
  27.  
  28. int mainWin;
  29. int basePic;
  30. int msg;
  31. str file[];
  32. int cPic[];
  33. int cast[];
  34. int x1[],y1[],x2[],y2[];
  35. int nMaxPic;
  36. str iniFile;
  37. int backPic;
  38. str back;
  39. int backPic2,backPic1;
  40. int PicW[],PicH[];
  41. int xAdd[],yAdd[];
  42. str dir;
  43. int skip[];
  44.  
  45. main(){
  46. //    Debug(1);
  47.     CapTitle("  Filly Graphics Viewer Ver.0.3-");
  48.     int i;
  49.     str title;
  50.     int length;
  51.     int colR,colG,colB;
  52.     int nIniFiles;
  53.     str buf[];
  54.     int bx[],bcx[],by,bcy,btPic,btCast[];
  55.     int page,maxP;
  56.     str font;
  57.     int backPic0;
  58.  
  59.     dir=GetCWD();
  60.     if(StrLen(dir)!=3){
  61.         dir=dir+"\";
  62.     }
  63.     nIniFiles=GetEntry(dir+"fgv???.ini",buf[],0x20);
  64.     if(GetIniStr("lastIni","IniFile","","fgv.ini")!=""){
  65.         iniFile=GetIniStr("lastIni","IniFile","","fgv.ini");
  66.     }
  67.     else if(nIniFiles!=1){
  68.         iniFile=StrInput(".ini","FGV ini Files(*.ini)|*.ini||",1,0x1000,"fgv.ini",1);
  69.     }
  70.     else{
  71.         iniFile="fgv.ini";
  72.     }
  73.     back=GetIniStr("bmpName","back",dir+"fgv.bmp",iniFile);
  74.     if(IsExist(back)==NO_EXIST){
  75.         MsgBox(StrPrint("ファイル「%s」が見つからないのでFGVを中止します。",back));
  76.         CloseWin(mainWin);
  77.         ExitTitle();
  78.         del_all;
  79.         del_me;
  80.     }
  81.     backPic=LoadPic(back);
  82.     if(back!=dir+"fgv.bmp"){
  83.         backPic0=LoadPic(dir+"fgv.bmp");
  84.         MovePic(backPic0,0,480,410,100,(backPic1=CreatePic(backPic0,410,100)));
  85.         DelPic(backPic0);
  86.     }
  87.     else{
  88.         MovePic(backPic,0,480,410,100,(backPic1=CreatePic(backPic,410,100)));
  89.     }
  90.     basePic=CreatePic(backPic,640,480);
  91.     PutCast(backPic,basePic,0,0,0x80000000,1,0,0,640,480,0,0);
  92.     page=1;
  93.     i=0;
  94.     while((GetIniStr("bmpName",StrPrint("bmp%02ld",i+1),"",iniFile)!="")){
  95.     i=i+1;
  96.     }
  97.     if(i==0){
  98.         MsgBox("FGVカタログでないか、カタログにBMPファイルが登録されていないのでFGVを中止します。");
  99.         CloseWin(mainWin);
  100.         ExitTitle();
  101.         del_all;
  102.         del_me;
  103.     }
  104.     maxP=(i-1)/16+1;
  105.  
  106.     DrawRect(backPic,100+DX+3,10+DY+2,540+DX+3,50+DY+2);
  107.     SetPaintColor(0xffffff);
  108.     DrawRect(backPic,100,10,540,50);
  109.     title=GetIniStr("titleName","title","Filly Graphics Viewer",iniFile);
  110.     colR=GetIniInt("titleName","colR",0,iniFile);
  111.     colG=GetIniInt("titleName","colG",255,iniFile);
  112.     colB=GetIniInt("titleName","colB",0,iniFile);
  113.     length=(28-StrLen(title))/2;
  114.     for(i=1;i<=length;i=i+1){
  115.         title=" "+title;
  116.     }
  117.     BackMode(1);
  118.     font=GetIniStr("titleName","font","MS 明朝",iniFile);
  119.     SetFont(30,font,128,0,0,0,500);
  120. //    SetFont(30,"DF平成明朝体W5",128,0,0,0,500);
  121.     TextColor(0,0,0);
  122.     TextWrite(title,backPic,110+1,15+1);
  123.     TextColor(colR,colG,colB);
  124.     TextWrite(title,backPic,110,15);
  125. //    btPic=LoadPic(dir+"fgv_bt.fgv");
  126.     btPic=CreatePic(backPic1,46,54);
  127.     MovePic(backPic1,0,0,46,54,btPic);
  128.     bx[1]=45;    bx[2]=570;    by=20;
  129.     bcx[1]=0;    bcx[2]=23;
  130.     for(i=1;i<=2;i=i+1){
  131.         btCast[i]=PutCast(btPic,basePic,bx[i],by,0x00ff00,0,1,0,23,27,bcx[i],0);
  132.         }
  133.     mainWin=OpenWin(basePic);
  134.     init(page);
  135.  
  136.     mes(LBDOWN){
  137.         if(HitCast(basePic,MesP2,MesP3)==btCast[2]){
  138.             if(page<maxP){
  139.                 MoveCast(btCast[2],btPic,bx[2],by,0,23,27,23,27,0x00ff00);
  140.                 page=page+1;
  141.                 for(i=1;i<=16;i=i+1){
  142.                     if(skip[i]!=ON){
  143.                         DelCast(cast[i]);
  144.                         DelPic(cPic[i]);
  145.                     }
  146.                 }
  147.                 init(page);
  148.                 MoveCast(btCast[2],btPic,bx[2],by,0,23,27,23,0,0x00ff00);
  149.             }
  150.         }
  151.         if(HitCast(basePic,MesP2,MesP3)==btCast[1]){
  152.             if(page>1){
  153.                 MoveCast(btCast[1],btPic,bx[1],by,0,23,27,0,27,0x00ff00);
  154.                 page=page-1;
  155.                 for(i=1;i<=16;i=i+1){
  156.                     if(skip[i]!=ON){
  157.                         DelCast(cast[i]);
  158.                         DelPic(cPic[i]);
  159.                     }
  160.                 }
  161.                 init(page);
  162.                 MoveCast(btCast[1],btPic,bx[1],by,0,23,27,0,0,0x00ff00);
  163.             }
  164.         }
  165.         msg=GetMesNo(1);
  166.         for(i=1;i<=nMaxPic;i=i+1){
  167.             if(HitCast(basePic,MesP2,MesP3)==cast[i]){
  168.                 FreezeMes(msg);
  169.                 changeBtn(i);
  170.             }
  171.         }
  172.     }
  173. }
  174.  
  175. int checkRect(int x1,int y1,int x2,int y2,int Win,int type=0){
  176.     if(type==0){
  177.         if(MesP2>=x1&&MesP2<=x2&&MesP3>=y1&&MesP3<=y2&&MesP1==Win){
  178.             return(ON);
  179.         }
  180.         else{
  181.             return(OFF);
  182.         }
  183.     }
  184.     else{
  185.         if(MesP2<x1||MesP2>x2||MesP3<y1||MesP3>y2&&MesP1==Win){
  186.             return(ON);
  187.         }
  188.         else{
  189.             return(OFF);
  190.         }
  191.     }
  192. }
  193.  
  194. int changeBtn(int n){
  195.     MoveCast(cast[n],cPic[n],x1[n]+DX,y1[n]+DY);
  196.     mes(MOUSEMOVE){
  197.         if(checkRect(x1[n],y1[n],x2[n],y2[n],mainWin,1)==ON){
  198.             MoveCast(cast[n],cPic[n],x1[n],y1[n]);
  199.             ActivateMes(msg);
  200.             del_us;
  201.             del_me;
  202.         }
  203.     }
  204.     mes(LBUP){
  205.         MoveCast(cast[n],cPic[n],x1[n],y1[n]);
  206.         if(checkRect(x1[n],y1[n],x2[n],y2[n],mainWin)==ON){
  207.             showPic(n);
  208.             del_us;
  209.             del_me;
  210.         }
  211.         else{
  212.             del_us;
  213.             del_me;
  214.         }
  215.     }
  216. }
  217.  
  218. int showPic(int no){
  219.     int pCast;
  220.     int pic1,pic2;
  221.     int w,h;
  222.     int subWin;
  223.  
  224.     pic1=LoadPic(file[no]);
  225.     w=PicWidth(pic1);
  226.     h=PicHeight(pic1);
  227.     CapTitle(StrPrint("  %s %ldx%ld",StrLow(file[no]),w,h));
  228.     subWin=OpenWin(pic1,(WinInfo(0)-w)/2+10,(WinInfo(1)-h)/2+10);
  229.     mes(LBDOWN){
  230.         DelPic(pic1);
  231.         CloseWin(subWin);
  232.         ActivateMes(msg);
  233.         del_us;
  234.         del_me;
  235.     }
  236. //    mes(RBDOWN){
  237. //        SysPalam(20,0,file[no],3);
  238. //    }
  239. }
  240.  
  241. int init(int ip){
  242.     int i;
  243.     int pic[];
  244.     int nx,ny,x0,y0;
  245.     int nowPic,nowCast;
  246.     int width,height;
  247.  
  248.     backPic2=LoadPic(back);
  249.     MovePic(backPic2,0,55,640,425,backPic,0,55);
  250.     RepaintCast(basePic,0,0,640,480);
  251. //    nowPic=LoadPic(dir+"fgv_now.fgv");
  252. //    nowCast=PutCast(nowPic,basePic,140,190,0x00ff00);
  253.     nowCast=PutCast(backPic1,basePic,140,190,0x00ff00,1,1,0,364,100,46,0);
  254.     DelPic(backPic2);
  255.     i=1;
  256.     while(((file[i]=GetIniStr("bmpName",StrPrint("bmp%02ld",i+(ip-1)*16),"",iniFile))!="")&&i<=16){
  257.         skip[i]=OFF;
  258.         if(IsExist(file[i])==NO_EXIST){
  259.             MsgBox(StrPrint("ファイル「%s」は見つからないのでスキップします。",file[i]));
  260.             skip[i]=ON;
  261.         }
  262.         i=i+1;
  263.     }
  264.     nMaxPic=i-1;
  265.     if(nMaxPic>3){
  266.         nx=4;
  267.     }
  268.     else{
  269.         nx=nMaxPic;
  270.     }
  271.     ny=(nMaxPic-1)/4+1;
  272.     x0=(PicWidth(basePic)-WIDTH*4-45)/2;
  273.     y0=(PicHeight(basePic)-HEIGHT*4-36)/2+22;
  274.     SetLineSize(1);
  275.     SetPaintColor(0x000000);
  276.     for(i=1;i<=nMaxPic;i=i+1){
  277.         if(skip[i]!=ON){
  278.             pic[i]=LoadPic(file[i]);
  279.             PicW[i]=PicWidth(pic[i]);
  280.             PicH[i]=PicHeight(pic[i]);
  281.             xAdd[i]=(640-PicW[i])/2;
  282.             yAdd[i]=(480-PicH[i])/2;
  283.             if(PicW[i]>640&&PicH[i]<=480){
  284.                 PicH[i]=PicH[i]*640/PicW[i];
  285.                 PicW[i]=640;
  286.                 xAdd[i]=0;
  287.                 yAdd[i]=(480-PicH[i])/2;
  288.             }
  289.             else if(PicW[i]<=640&&PicH[i]>480){
  290.             PicW[i]=PicW[i]*480/PicH[i];
  291.                 PicH[i]=480;
  292.                 xAdd[i]=(640-PicW[i])/2;
  293.                 yAdd[i]=0;
  294.             }
  295.             else if(PicW[i]>640&&PicH[i]>480){
  296.                 if(PicW[i]*3>PicH[i]*4){
  297.                     PicH[i]=PicH[i]*640/PicW[i];
  298.                     PicW[i]=640;
  299.                     xAdd[i]=0;
  300.                     yAdd[i]=(480-PicH[i])/2;
  301.                 }
  302.                 else if(PicW[i]*3<PicH[i]*4){
  303.                     PicW[i]=PicW[i]*480/PicH[i];
  304.                     PicH[i]=480;
  305.                     xAdd[i]=(640-PicW[i])/2;
  306.                     yAdd[i]=0;
  307.                 }
  308.             else{
  309.                         PicW[i]=640;
  310.                 PicH[i]=480;
  311.                     xAdd[i]=0;
  312.                     yAdd[i]=0;
  313.                 }
  314.             }
  315.             else if(PicW[i]<640&&PicH[i]<480){
  316.                 if(PicW[i]*3>PicH[i]*4){
  317.                     PicH[i]=PicH[i]*640/PicW[i];
  318.                     PicW[i]=640;
  319.                 }
  320.                 else if(PicW[i]*3<PicH[i]*4){
  321.                     PicW[i]=PicW[i]*480/PicH[i];
  322.                     PicH[i]=480;
  323.                 }
  324.                 else{
  325.                     PicW[i]=640;
  326.                     PicH[i]=480;
  327.                 }
  328.             }
  329.             width=WIDTH*PicW[i]/640;
  330.             height=HEIGHT*PicH[i]/480;
  331.             cPic[i]=CreatePic(pic[i],width,height);
  332.             x1[i]=x0+((i-1)%4)*(WIDTH+15)+(4-nx)*(WIDTH+15)/2+(WIDTH-width)/2;
  333.             x2[i]=x1[i]+width;
  334.             y1[i]=y0+((i-1)/4)*(HEIGHT+12)+(4-ny)*(HEIGHT+12)/2+(HEIGHT-height)/2;
  335.             y2[i]=y1[i]+height;
  336.             MoveSPic(pic[i],0,0,PicWidth(pic[i]),PicHeight(pic[i]),cPic[i],0,0,width,height);
  337.             DelPic(pic[i]);
  338.             DrawRect(backPic,x1[i]+DX+1,y1[i]+DY+1,x2[i]+DX+1,y2[i]+DY+1);
  339.         }
  340.     }
  341.     DelCast(nowCast);
  342. //    DelPic(nowPic);
  343.     RepaintCast(basePic,0,0,640,480);
  344.     for(i=1;i<=nMaxPic;i=i+1){
  345.         if(skip[i]!=ON){
  346.             cast[i]=PutCast(cPic[i],basePic,x1[i],y1[i]);
  347.         }
  348.     }
  349. }
  350.