home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 March
/
VPR9703A.ISO
/
FFILLY
/
YunPhoto
/
fgv03.tfy
< prev
next >
Wrap
Text File
|
1997-01-06
|
8KB
|
350 lines
//Filly Graphics Viewer Ver.0.3-
#info INAM "Filly Graphics Viewer Ver.0.3-"
#info ISBJ "グラフィック(BMPファイル)がメニュー形式で閲覧できます。"
#info IART "POCOPEN,GGB02243@niftyserve.or.jp"
#info ICMT "バージョン0.3"
#info ICOP "POCOPEN,GGB02243@niftyserve.or.jp"
#info IENG "POCOPEN,GGB02243@niftyserve.or.jp"
#info IGNR "graphic viewer"
#info IKEY "FGV; POCOPEN"
#info GENR "graphic; utility"
#info MDFY "Ask me"
#info TRNS "Ask me"
#info JINT "Ask me"
#info VIDO "800x600; 65536"
#define ON 1
#define OFF 0
#define NO_EXIST 0
#define DX 2
#define DY 2
#define WIDTH 120
#define HEIGHT 90
int checkRect();
int changeBtn();
int showPic();
int mainWin;
int basePic;
int msg;
str file[];
int cPic[];
int cast[];
int x1[],y1[],x2[],y2[];
int nMaxPic;
str iniFile;
int backPic;
str back;
int backPic2,backPic1;
int PicW[],PicH[];
int xAdd[],yAdd[];
str dir;
int skip[];
main(){
// Debug(1);
CapTitle(" Filly Graphics Viewer Ver.0.3-");
int i;
str title;
int length;
int colR,colG,colB;
int nIniFiles;
str buf[];
int bx[],bcx[],by,bcy,btPic,btCast[];
int page,maxP;
str font;
int backPic0;
dir=GetCWD();
if(StrLen(dir)!=3){
dir=dir+"\";
}
nIniFiles=GetEntry(dir+"fgv???.ini",buf[],0x20);
if(GetIniStr("lastIni","IniFile","","fgv.ini")!=""){
iniFile=GetIniStr("lastIni","IniFile","","fgv.ini");
}
else if(nIniFiles!=1){
iniFile=StrInput(".ini","FGV ini Files(*.ini)|*.ini||",1,0x1000,"fgv.ini",1);
}
else{
iniFile="fgv.ini";
}
back=GetIniStr("bmpName","back",dir+"fgv.bmp",iniFile);
if(IsExist(back)==NO_EXIST){
MsgBox(StrPrint("ファイル「%s」が見つからないのでFGVを中止します。",back));
CloseWin(mainWin);
ExitTitle();
del_all;
del_me;
}
backPic=LoadPic(back);
if(back!=dir+"fgv.bmp"){
backPic0=LoadPic(dir+"fgv.bmp");
MovePic(backPic0,0,480,410,100,(backPic1=CreatePic(backPic0,410,100)));
DelPic(backPic0);
}
else{
MovePic(backPic,0,480,410,100,(backPic1=CreatePic(backPic,410,100)));
}
basePic=CreatePic(backPic,640,480);
PutCast(backPic,basePic,0,0,0x80000000,1,0,0,640,480,0,0);
page=1;
i=0;
while((GetIniStr("bmpName",StrPrint("bmp%02ld",i+1),"",iniFile)!="")){
i=i+1;
}
if(i==0){
MsgBox("FGVカタログでないか、カタログにBMPファイルが登録されていないのでFGVを中止します。");
CloseWin(mainWin);
ExitTitle();
del_all;
del_me;
}
maxP=(i-1)/16+1;
DrawRect(backPic,100+DX+3,10+DY+2,540+DX+3,50+DY+2);
SetPaintColor(0xffffff);
DrawRect(backPic,100,10,540,50);
title=GetIniStr("titleName","title","Filly Graphics Viewer",iniFile);
colR=GetIniInt("titleName","colR",0,iniFile);
colG=GetIniInt("titleName","colG",255,iniFile);
colB=GetIniInt("titleName","colB",0,iniFile);
length=(28-StrLen(title))/2;
for(i=1;i<=length;i=i+1){
title=" "+title;
}
BackMode(1);
font=GetIniStr("titleName","font","MS 明朝",iniFile);
SetFont(30,font,128,0,0,0,500);
// SetFont(30,"DF平成明朝体W5",128,0,0,0,500);
TextColor(0,0,0);
TextWrite(title,backPic,110+1,15+1);
TextColor(colR,colG,colB);
TextWrite(title,backPic,110,15);
// btPic=LoadPic(dir+"fgv_bt.fgv");
btPic=CreatePic(backPic1,46,54);
MovePic(backPic1,0,0,46,54,btPic);
bx[1]=45; bx[2]=570; by=20;
bcx[1]=0; bcx[2]=23;
for(i=1;i<=2;i=i+1){
btCast[i]=PutCast(btPic,basePic,bx[i],by,0x00ff00,0,1,0,23,27,bcx[i],0);
}
mainWin=OpenWin(basePic);
init(page);
mes(LBDOWN){
if(HitCast(basePic,MesP2,MesP3)==btCast[2]){
if(page<maxP){
MoveCast(btCast[2],btPic,bx[2],by,0,23,27,23,27,0x00ff00);
page=page+1;
for(i=1;i<=16;i=i+1){
if(skip[i]!=ON){
DelCast(cast[i]);
DelPic(cPic[i]);
}
}
init(page);
MoveCast(btCast[2],btPic,bx[2],by,0,23,27,23,0,0x00ff00);
}
}
if(HitCast(basePic,MesP2,MesP3)==btCast[1]){
if(page>1){
MoveCast(btCast[1],btPic,bx[1],by,0,23,27,0,27,0x00ff00);
page=page-1;
for(i=1;i<=16;i=i+1){
if(skip[i]!=ON){
DelCast(cast[i]);
DelPic(cPic[i]);
}
}
init(page);
MoveCast(btCast[1],btPic,bx[1],by,0,23,27,0,0,0x00ff00);
}
}
msg=GetMesNo(1);
for(i=1;i<=nMaxPic;i=i+1){
if(HitCast(basePic,MesP2,MesP3)==cast[i]){
FreezeMes(msg);
changeBtn(i);
}
}
}
}
int checkRect(int x1,int y1,int x2,int y2,int Win,int type=0){
if(type==0){
if(MesP2>=x1&&MesP2<=x2&&MesP3>=y1&&MesP3<=y2&&MesP1==Win){
return(ON);
}
else{
return(OFF);
}
}
else{
if(MesP2<x1||MesP2>x2||MesP3<y1||MesP3>y2&&MesP1==Win){
return(ON);
}
else{
return(OFF);
}
}
}
int changeBtn(int n){
MoveCast(cast[n],cPic[n],x1[n]+DX,y1[n]+DY);
mes(MOUSEMOVE){
if(checkRect(x1[n],y1[n],x2[n],y2[n],mainWin,1)==ON){
MoveCast(cast[n],cPic[n],x1[n],y1[n]);
ActivateMes(msg);
del_us;
del_me;
}
}
mes(LBUP){
MoveCast(cast[n],cPic[n],x1[n],y1[n]);
if(checkRect(x1[n],y1[n],x2[n],y2[n],mainWin)==ON){
showPic(n);
del_us;
del_me;
}
else{
del_us;
del_me;
}
}
}
int showPic(int no){
int pCast;
int pic1,pic2;
int w,h;
int subWin;
pic1=LoadPic(file[no]);
w=PicWidth(pic1);
h=PicHeight(pic1);
CapTitle(StrPrint(" %s %ldx%ld",StrLow(file[no]),w,h));
subWin=OpenWin(pic1,(WinInfo(0)-w)/2+10,(WinInfo(1)-h)/2+10);
mes(LBDOWN){
DelPic(pic1);
CloseWin(subWin);
ActivateMes(msg);
del_us;
del_me;
}
// mes(RBDOWN){
// SysPalam(20,0,file[no],3);
// }
}
int init(int ip){
int i;
int pic[];
int nx,ny,x0,y0;
int nowPic,nowCast;
int width,height;
backPic2=LoadPic(back);
MovePic(backPic2,0,55,640,425,backPic,0,55);
RepaintCast(basePic,0,0,640,480);
// nowPic=LoadPic(dir+"fgv_now.fgv");
// nowCast=PutCast(nowPic,basePic,140,190,0x00ff00);
nowCast=PutCast(backPic1,basePic,140,190,0x00ff00,1,1,0,364,100,46,0);
DelPic(backPic2);
i=1;
while(((file[i]=GetIniStr("bmpName",StrPrint("bmp%02ld",i+(ip-1)*16),"",iniFile))!="")&&i<=16){
skip[i]=OFF;
if(IsExist(file[i])==NO_EXIST){
MsgBox(StrPrint("ファイル「%s」は見つからないのでスキップします。",file[i]));
skip[i]=ON;
}
i=i+1;
}
nMaxPic=i-1;
if(nMaxPic>3){
nx=4;
}
else{
nx=nMaxPic;
}
ny=(nMaxPic-1)/4+1;
x0=(PicWidth(basePic)-WIDTH*4-45)/2;
y0=(PicHeight(basePic)-HEIGHT*4-36)/2+22;
SetLineSize(1);
SetPaintColor(0x000000);
for(i=1;i<=nMaxPic;i=i+1){
if(skip[i]!=ON){
pic[i]=LoadPic(file[i]);
PicW[i]=PicWidth(pic[i]);
PicH[i]=PicHeight(pic[i]);
xAdd[i]=(640-PicW[i])/2;
yAdd[i]=(480-PicH[i])/2;
if(PicW[i]>640&&PicH[i]<=480){
PicH[i]=PicH[i]*640/PicW[i];
PicW[i]=640;
xAdd[i]=0;
yAdd[i]=(480-PicH[i])/2;
}
else if(PicW[i]<=640&&PicH[i]>480){
PicW[i]=PicW[i]*480/PicH[i];
PicH[i]=480;
xAdd[i]=(640-PicW[i])/2;
yAdd[i]=0;
}
else if(PicW[i]>640&&PicH[i]>480){
if(PicW[i]*3>PicH[i]*4){
PicH[i]=PicH[i]*640/PicW[i];
PicW[i]=640;
xAdd[i]=0;
yAdd[i]=(480-PicH[i])/2;
}
else if(PicW[i]*3<PicH[i]*4){
PicW[i]=PicW[i]*480/PicH[i];
PicH[i]=480;
xAdd[i]=(640-PicW[i])/2;
yAdd[i]=0;
}
else{
PicW[i]=640;
PicH[i]=480;
xAdd[i]=0;
yAdd[i]=0;
}
}
else if(PicW[i]<640&&PicH[i]<480){
if(PicW[i]*3>PicH[i]*4){
PicH[i]=PicH[i]*640/PicW[i];
PicW[i]=640;
}
else if(PicW[i]*3<PicH[i]*4){
PicW[i]=PicW[i]*480/PicH[i];
PicH[i]=480;
}
else{
PicW[i]=640;
PicH[i]=480;
}
}
width=WIDTH*PicW[i]/640;
height=HEIGHT*PicH[i]/480;
cPic[i]=CreatePic(pic[i],width,height);
x1[i]=x0+((i-1)%4)*(WIDTH+15)+(4-nx)*(WIDTH+15)/2+(WIDTH-width)/2;
x2[i]=x1[i]+width;
y1[i]=y0+((i-1)/4)*(HEIGHT+12)+(4-ny)*(HEIGHT+12)/2+(HEIGHT-height)/2;
y2[i]=y1[i]+height;
MoveSPic(pic[i],0,0,PicWidth(pic[i]),PicHeight(pic[i]),cPic[i],0,0,width,height);
DelPic(pic[i]);
DrawRect(backPic,x1[i]+DX+1,y1[i]+DY+1,x2[i]+DX+1,y2[i]+DY+1);
}
}
DelCast(nowCast);
// DelPic(nowPic);
RepaintCast(basePic,0,0,640,480);
for(i=1;i<=nMaxPic;i=i+1){
if(skip[i]!=ON){
cast[i]=PutCast(cPic[i],basePic,x1[i],y1[i]);
}
}
}