home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Kyūkyoku!! X68000 Emulator
/
X68000Book.dat
/
mac
/
OLS
/
X68000
/
Ko-Window
/
kow142s.lzh
/
corlib
/
MgButtonOperation.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-05-04
|
3KB
|
100 lines
/* Copyright 1992 H.Ogasawara (COR.) */
/* MenuButton é≡Æ╟ë┴ü@1994 ébé`éa */
/* ÅCÉ│ 1994 5/4 COR. */
#include <wlib.h>
#include <parts.h>
#include "MgButton.h"
MgButtonOperation( wp, info, mp )
WindowID wp;
EventInfo *info;
MgButton *mp;
{
for( mp= mp->next ; mp ; mp= mp->next ){
if( ClipInner( (ClipClass*)mp, info->x, info->y ) ){
DrawBuf dbuf[2];
int press= TRUE;
int sx, sy, hx, hy;
WindowGetScreenPosition( wp, &sx, &sy );
WindowGetHome( wp, &hx, &hy );
switch( mp->type ){
case ToggleButton:
DrawSetLine( dbuf, mp->x1+1, mp->y1+1,
mp->x2-1, mp->y2-1,
ShadowDown, OptionShadow );
DrawSetLine( dbuf+1, mp->x1+1, mp->y1+1,
mp->x2-1, mp->y2-1,
1, OptionBox );
break;
case PushButtonSht:
DrawSetPut( dbuf, mp->x1, mp->y1,
((MgButtonSht*)mp)->shon );
DrawSetPut( dbuf+1, mp->x1, mp->y1,
((MgButtonSht*)mp)->shoff );
break;
case TouchButton:
DrawSetLine( dbuf, mp->x1, mp->y1,
mp->x2, mp->y2,
ColorGray|OptionXor, OptionFill );
WindowDraw( wp, dbuf, 1 );
DrawSetLine( dbuf, mp->x1, mp->y1,
mp->x2, mp->y2,
ColorGray|OptionXor, OptionFill );
WindowDraw( wp, dbuf, 1 );
return mp->ret;
default:
DrawSetLine( dbuf, mp->x1, mp->y1,
mp->x2, mp->y2,
ShadowDown, OptionShadow );
DrawSetLine( dbuf+1, mp->x1, mp->y1,
mp->x2, mp->y2,
ShadowUp, OptionShadow );
break;
}
WindowDraw( wp, dbuf, 1 ); /* ëƒé│éΩé─éóéΘÅ≤æ╘ */
if( mp->type == MenuButton ){
/* Æ╟ë┴ü@ébé`éa, ÅCÉ│ COR. */
int ret= (*((MgButtonMenu*)mp)->
exec)( wp, info, mp,
((MgButtonMenu*)mp)->opt );
WindowDraw( wp, dbuf+1, 1 );
return ret;
}
do{
WindowGetEventInfo( info );
if( ClipInner( (ClipClass*)mp,
info->x-sx+hx, info->y-sy+hy ) ){
if( !press ){
WindowDraw( wp, dbuf, 1 );
press= TRUE;
}
}else{
if( press ){
WindowDraw( wp, dbuf+1, 1 );
press= FALSE;
}
}
}while( info->LeftStat || info->RightStat );
if( press ){
if( mp->type == ToggleButton ){
DrawSetLine( dbuf, mp->x1, mp->y1,
mp->x2, mp->y2,
(*(((MgButtonTgl*)mp)->sw)= !*(((MgButtonTgl*)mp)->sw))?
ShadowDown : ShadowUp,
OptionShadow );
WindowDraw( wp, dbuf, 2 );
}else{
WindowDraw( wp, dbuf+1, 1 );
}
return mp->ret;
}
break;
}
}
return FALSE;
}