home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
MM1
/
GRAPHICS
/
jpegshow_3.0.lzh
/
JPEGSHOW
/
openwin.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-10-07
|
4KB
|
141 lines
#include <stdio.h>
#include <signal.h>
#ifdef __UWLIBS__
typedef long size_t;
#endif
#include "jpeglib.h"
#include <wind.h>
#include <mouse.h>
#define MAIN
#include <stdmenu.h>
#include <buffs.h>
#include <math.h>
#define MS_SIG 200
#define MN_PREV 30
#define MN_NEXT 31
#define MN_SEL 32
#define MN_MOD 33
#define MN_SCA 34
extern struct jpeg_decompress_struct cinfo;
extern int scale, gflag, rflag, sflag;
MIDSCR _modms[] = {
{{"Normal"}, ENABLE, RESERVED, 0},
{{"Gray"}, ENABLE, RESERVED, 0},
{{"1 pass"}, ENABLE, RESERVED, 0},
{{"Progress"}, ENABLE, RESERVED, 0}
};
MIDSCR _sclms[] = {
{{"1"}, ENABLE, RESERVED, 0},
{{"2"}, ENABLE, RESERVED, 0},
{{"4"}, ENABLE, RESERVED, 0},
{{"8"}, ENABLE, RESERVED, 0}
};
#define MOD_SZ sizeof(_modms)/sizeof(_modms[0])
#define SCL_SZ sizeof(_sclms)/sizeof(_sclms[0])
MNDSCR wnmen[] =
{
{{"Prev"}, MN_PREV, 6, 0, ENABLE},
{{"Next"}, MN_NEXT, 6, 0, ENABLE},
{{"Select"}, MN_SEL, 6, 0, ENABLE},
{{"Mode"}, MN_MOD, 8, MOD_SZ, ENABLE, RESERVED, _modms},
{{"Scale"}, MN_SCA, 6, SCL_SZ, ENABLE, RESERVED, _sclms }
};
WNDSCR windat = {
"Jpegshow", sizeof(wnmen) / sizeof(wnmen[0]), 45, 10, WINSYNC, RESERVED, wnmen};
int wtype = WT_FSWIN | WC_MOVE | WC_GROW;
int gotsig;
int h_pos, v_pos;
MSRET ms;
int repaint(int x, int y);
openwin(int actwin)
{
register int mx, my;
Palette(actwin, 254, 0, 0, 0);
Palette(actwin, 255, 200, 200, 200);
Mn_Colors(actwin, 255, 254, 255, 255, 255);
_ss_wset(actwin, wtype, &windat);
Select(actwin);
Font(actwin, GRP_FONT, FNT_G8X8);
_ss_sbar(actwin, h_pos, v_pos);
}
int mmenu(int actwin, int argc, char **argv)
{
int sel, item;
for (;;) {
_ss_ubar(actwin);
_ss_msig(actwin, MS_SIG);
sleep(0);
if (gotsig != MS_SIG)
continue;
_gs_mouse(actwin, &ms);
if (ms.pt_area != WR_CNTRL || ms.pt_valid == 0)
continue; /* not control region - ignore */
sel = _gs_msel(actwin, &item);
switch ( sel ) {
case MN_CLOS: Select(0);
kill(getpid(), SIGINT);
exit(0); /* should kill() fail */
case MN_PREV: return -1;
case MN_NEXT: return 0;
case MN_SEL: list_box(actwin, &item, argv+1, argc-1, 10, 0, 20, 57, "Which file?");
if ( item == 0 )
break;
return item;
case MN_HSCRL:
if ( h_pos != item && repaint(item, v_pos) ) {
h_pos = item;
_ss_sbar(actwin, h_pos, v_pos);
}
break;
case MN_VSCRL:
if ( v_pos != item && repaint(h_pos, item) ) {
v_pos = item;
_ss_sbar(actwin, h_pos, v_pos);
}
break;
case MN_MOD:
switch (item) {
case 1: gflag = rflag = sflag = 0;
break;
case 2: gflag = 1;
break;
case 3: sflag = 1;
gflag = 0;
break;
case 4: rflag = 1;
break;
}
break;
case MN_SCA:
switch (item) {
case 1: scale = 1;
break;
case 2: scale = 2;
break;
case 3: scale = 4;
break;
case 4: scale = 8;
break;
}
break;
default:
continue;
}
}
}