home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-12-02 | 91.7 KB | 3,432 lines |
- /* Title: RunImage.c
- *
- * WIMP frontend for the PBMplus toolkit !PBMtk
- *
- * (c) Copyright 1993 Terry Duell
- *
- */
-
- #include "wimp.h"
- #include "wimpt.h"
- #include "win.h"
- #include "event.h"
- #include "baricon.h"
- #include "res.h"
- #include "resspr.h"
- #include "menu.h"
- #include "template.h"
- #include "dbox.h"
- #include "werr.h"
- #include "xferrecv.h"
- #include "xfersend.h"
- #include "visdelay.h"
- #include "saveas.h"
- #include "os.h"
-
- #include <stdlib.h>
- #include <string.h>
- #include <stdio.h>
- #include <limits.h>
-
- /********************************* CONSTANTS ********************************/
-
- /* Icon bar menu items */
- #define Icon_menu_info 1
- #define Icon_menu_quit 2
-
- /* Window menu items--main menu */
- #define Win_menu_read 1
- #define Win_menu_write 2
- #define Win_menu_pbm 3
- #define Win_menu_pgm 4
- #define Win_menu_ppm 5
- #define Win_menu_pnm 6
- #define Win_menu_help 7
- #define Win_menu_images 8
- #define Win_menu_filters 9
- #define Win_menu_quit 10
-
-
- /* Read-in submenu items */
- #define Rd_menu_FITS 1
- #define Rd_menu_RawtoPGM 2
- #define Rd_menu_RawtoPPM 3
- #define Rd_menu_YUVtoPPM 4
-
- /* Write-out submenu items */
- #define Wr_menu_toFITS 1
- #define Wr_menu_toACAD 2
- #define Wr_menu_toPS 3
- #define Wr_menu_PPMtoyuv 4
-
- /* PBM-process submenu items */
- #define PBM_menu_make 1
- #define PBM_menu_mask 2
- #define PBM_menu_reduce 3
- #define PBM_menu_text 4
-
- /* PGM-process submenu items */
- #define PGM_menu_Bentley 1
- #define PGM_menu_Crater 2
- #define PGM_menu_Edge 3
- #define PGM_menu_Enhance 4
- #define PGM_menu_Histo 5
- #define PGM_menu_Norm 6
- #define PGM_menu_Oil 7
- #define PGM_menu_Ramp 8
- #define PGM_menu_toPBM 9
- #define PGM_menu_RGB3toPPM 10
-
- /* PPM-process submenu items */
- #define PPM_menu_Dither 1
- #define PPM_menu_Forge 2
- #define PPM_menu_Histo 3
- #define PPM_menu_Make 4
- #define PPM_menu_Pattern 5
- #define PPM_menu_Quantize 6
- #define PPM_menu_Relief 7
- #define PPM_menu_toPGM 8
-
-
- /* PNM-process submenu items */
- #define PNM_menu_Arith 1
- #define PNM_menu_Concat 2
- #define PNM_menu_Convol 3
- #define PNM_menu_Crop 4
- #define PNM_menu_Cut 5
- #define PNM_menu_Depth 6
- #define PNM_menu_File 7
- #define PNM_menu_Flip 8
- #define PNM_menu_Gamma 9
- #define PNM_menu_NoRaw 10
- #define PNM_menu_Paste 11
- #define PNM_menu_Rotate 12
- #define PNM_menu_Scale 13
- #define PNM_menu_Shear 14
- #define PNM_menu_Tile 15
-
- /* Info box field for the version string */
- #define Example_info_field 4
-
- #define cmdstr 256
-
- /* PGMenhance dbox icons */
-
- #define enhminus 7
- #define enhplus 8
- #define enhlevel 6
-
- /* PNMconvol dbox icons */
-
- #define Image 5
- #define Filter 3
- #define RUN 0
- #define CANCEL 1
-
- /* PNMarith dbox icons */
-
- #define FileA 3
- #define FileB 5
- #define Plus 6
- #define Minus 7
- #define Mult 8
-
- /* PNMcat dbox icons */
-
- #define White 6
- #define Black 7
- #define Leftright 8
- #define Topbottom 9
- #define Top 10
- #define Bottom 11
- #define Left 12
- #define Right 13
-
- /* PNMcut dbox icons */
-
- #define cutx 7
- #define minuscutx 8
- #define pluscutx 9
- #define cuty 11
- #define minuscuty 12
- #define pluscuty 13
- #define cutwidth 16
- #define cutheight 17
- #define minuscutwidth 18
- #define pluscutwidth 19
- #define minuscutheight 20
- #define pluscutheight 21
-
- /* PNMpaste dbox icons */
-
- #define replace 6
- #define or 7
- #define and 8
- #define xor 10
- #define pastex 11
- #define minusx 12
- #define plusx 13
- #define pastey 14
- #define minusy 15
- #define plusy 16
-
- /* PPMpat dbox icons */
-
- #define minuspatx 2
- #define patx 3
- #define pluspatx 4
- #define minuspaty 5
- #define paty 6
- #define pluspaty 7
- #define ging2 8
- #define ging3 9
- #define madras 10
- #define tartan 11
- #define poles 12
- #define squig 13
- #define camo 14
- #define anticamo 15
-
- /* YUVtoPPM dbox icons */
-
- #define YUVwidthminus 7
- #define YUVwidth 8
- #define YUVwidthplus 9
- #define YUVheightminus 11
- #define YUVheight 12
- #define YUVheightplus 13
-
- /* PGMcrater dbox icons */
-
- #define CraterXminus 2
- #define CraterX 3
- #define CraterXplus 4
- #define CraterYminus 5
- #define CraterY 6
- #define CraterYplus 7
- #define Craternumber 8
- #define Craternumminus 9
- #define Craternumplus 10
- #define Cratergammaminus 11
- #define Cratergamma 12
- #define Cratergammaplus 13
-
- /* PNMtile dbox icons */
-
- #define TileXminus 7
- #define TileX 8
- #define TileXplus 9
- #define TileYminus 11
- #define TileY 12
- #define TileYplus 13
-
- /* PBMmake dbox icons */
-
- #define PBMmakeminusx 2
- #define PBMmakex 3
- #define PBMmakeplusx 4
- #define PBMmakeminusy 5
- #define PBMmakey 6
- #define PBMmakeplusy 7
- #define PBMmakewhite 8
- #define PBMmakeblack 10
- #define PBMmakegrey 11
-
-
- /*PNmscale dbox icons */
-
- #define factors 6
- #define regscale 8
- #define regfactminus 9
- #define regfact 10
- #define regfactplus 11
- #define iregfact 13
- #define xfactminus 14
- #define xfact 15
- #define xfactplus 16
- #define yfactminus 18
- #define yfact 19
- #define yfactplus 20
- #define sizes 22
- #define square 25
- #define squareminus 26
- #define squaresize 27
- #define squareplus 28
- #define rect 30
- #define rectwidminus 31
- #define rectwid 32
- #define rectwidplus 33
- #define rectheightminus 34
- #define rectheight 35
- #define rectheightplus 36
-
- /* define filetype */
-
- #define PBMplus 0x69e
- #define TXTtype 0xfff
-
- /******************************** GLOBAL DATA *******************************/
-
- /* Application version */
- static char *Version_String = "0.17 (14 Nov 1993)";
-
- /* The top of the menu tree */
- static menu Icon_menu;
- static menu Win_menu;
-
- static menu Rd_menu;
- static menu Wr_menu;
- static menu PBM_menu;
- static menu PGM_menu;
- static menu PPM_menu;
- static menu PNM_menu;
-
- /* Handle for the window */
- static wimp_w win_handle;
-
- /* the global constant for the output filename */
-
- static char *outfile;
-
- /* Flag - is the window open */
- static BOOL window_open = FALSE;
-
-
- /* ************************************************************/
-
- /* Save file */
-
- BOOL saver_proc(char *filename, void *handle)
-
- {
-
- os_filestr file;
- BOOL ok;
-
- visdelay_begin();
-
- /* create a file of given type and size (empty)
- and then have output redirected to this file
- by the command in Runtask().
-
- If we click OK, then output is redirected to
- this file. If we drag the 'saveas' icon to
- a directory viewer, the wimp provides the
- full pathname of the destination, and we use
- this to reset the pathname of the redirected
- output from the command, hence in both cases
- the file is saved OK. There is one outstanding
- problem. If the command exits with an error
- there is unlikely to be any output written.
- In this case the dummy file has been created
- and it should not have!
- The only solution to this may be to have a standard
- filename for all redirected output (to a scrap dir)
- and if command exits without error, then rename the file
- to either one appropriate for the command, or the
- pathname of the drag destination. if exit with error
- then delete the file. */
-
- file.action = 0x0b;
- file.name = filename;
- file.loadaddr = PBMplus;
- file.start = 0;
- file.end = 256;
-
- ok = ( wimpt_complain(os_file(&file)) == 0);
- outfile = filename;
- visdelay_end();
-
- return ok;
- }
-
- /******************************************************/
- /* run a task */
-
- void Runtask (char *cmd)
-
- {
- /* os_error errdata;*/
-
-
- visdelay_begin();
- /* errdata.errnum = wimp_starttask(cmd); */
- wimp_starttask(cmd);
- visdelay_end();
-
-
- /*if (errdata.errnum != 0)
- werr(0,"error..error!!");*/
- }
-
- /********************************************************/
-
- BOOL Arithhandler( dbox d, wimp_eventstr *e, void *handle)
-
- /* handle events in PNMArith Dbox, particularly input file drags*/
- {
- int filetype;
- char *Arithfile;
-
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Deal with event */
- switch (e->e)
- {
- case wimp_ECLOSE:
- {
- return FALSE;
- break;
- }
- case wimp_ESEND:
- case wimp_ESENDWANTACK:
- {
- /* We deal only with messages for loading and saving files here, using
- essentially the skeleton code given in the manual
- */
- switch (e->data.msg.hdr.action)
- {
-
- case wimp_MDATALOAD: /* insert data */
-
- switch(e->data.msg.data.dataload.i)
- {
-
- case FileA:
- {
- filetype = xferrecv_checkinsert(&Arithfile);
- dbox_setfield(d,FileA,Arithfile);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
- case FileB:
- {
- filetype = xferrecv_checkinsert(&Arithfile);
- dbox_setfield(d,FileB,Arithfile);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
- default:
- return FALSE;
- break;
- }
-
- default:
- return FALSE;
- break; /* ignore other messages */
- }
-
- }
- default: /* Ignore any other event */
- return FALSE;
- break;
- }
- return FALSE;
- }
-
- /*********************************************************/
-
- BOOL Pastehandler( dbox d, wimp_eventstr *e, void *handle)
-
- /* handle events in PNMPaste Dbox, particularly input file drags*/
- {
- int filetype;
- char *Pastefile;
-
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Deal with event */
- switch (e->e)
- {
-
- case wimp_ECLOSE:
- {
- return FALSE;
- break;
- }
- case wimp_ESEND:
- case wimp_ESENDWANTACK:
- {
- /* We deal only with messages for loading and saving files here, using
- essentially the skeleton code given in the manual
- */
- switch (e->data.msg.hdr.action)
- {
-
- case wimp_MDATALOAD: /* insert data */
-
- switch(e->data.msg.data.dataload.i)
- {
-
- case FileA:
- {
- filetype = xferrecv_checkinsert(&Pastefile);
- dbox_setfield(d,FileA,Pastefile);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
- case FileB:
- {
- filetype = xferrecv_checkinsert(&Pastefile);
- dbox_setfield(d,FileB,Pastefile);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
- default:
- return FALSE;
- break;
- }
- default:
- return FALSE;
- break; /* ignore other messages */
- }
- }
- default: /* Ignore any other event */
- return FALSE;
- break;
- }
- return FALSE;
- }
- /******************************************************/
-
-
- BOOL Cuthandler( dbox d, wimp_eventstr *e, void *handle)
-
- /* handle events in PNMcut Dbox, particularly input file drags*/
- {
- int filetype;
- char *Cutfile;
-
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Deal with event */
- switch (e->e)
- {
- case wimp_ECLOSE:
- {
- return FALSE;
- break;
- }
- case wimp_ESEND:
- case wimp_ESENDWANTACK:
- {
- /* We deal only with messages for loading and saving files here, using
- essentially the skeleton code given in the manual
- */
- switch (e->data.msg.hdr.action)
- {
-
- case wimp_MDATALOAD: /* insert data */
-
- switch(e->data.msg.data.dataload.i)
- {
-
- case FileA:
- {
- filetype = xferrecv_checkinsert(&Cutfile);
- dbox_setfield(d,FileA,Cutfile);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
- default:
- return FALSE;
- break;
- }
- default:
- return FALSE;
- break; /* ignore other messages */
- }
- }
- default: /* Ignore any other event */
- return FALSE;
- break;
- }
- return FALSE;
- }
-
- /***********************************/
-
- BOOL YUVtoPPMhandler( dbox d, wimp_eventstr *e, void *handle)
-
- /* handle events in YUVtoPPM Dbox, particularly input file drags*/
- {
- int filetype;
- char *YUVfile;
-
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Deal with event */
- switch (e->e)
- {
- case wimp_ECLOSE:
- {
- return FALSE;
- break;
- }
- case wimp_ESEND:
- case wimp_ESENDWANTACK:
- {
- /* We deal only with messages for loading and saving files here, using
- essentially the skeleton code given in the manual
- */
- switch (e->data.msg.hdr.action)
- {
-
- case wimp_MDATALOAD: /* insert data */
-
- switch(e->data.msg.data.dataload.i)
- {
-
- case FileA:
- {
- filetype = xferrecv_checkinsert(&YUVfile);
- dbox_setfield(d,FileA,YUVfile);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
- default:
- return FALSE;
- break;
- }
- default:
- return FALSE;
- break; /* ignore other messages */
- }
- }
- default: /* Ignore any other event */
- return FALSE;
- break;
- }
- return FALSE;
- }
-
- /***********************************/
-
- BOOL PNMtilehandler( dbox d, wimp_eventstr *e, void *handle)
-
- /* handle events in PNMtile Dbox, particularly input file drags*/
- {
- int filetype;
- char *PNMfile;
-
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Deal with event */
- switch (e->e)
- {
- case wimp_ECLOSE:
- {
- return FALSE;
- break;
- }
- case wimp_ESEND:
- case wimp_ESENDWANTACK:
- {
- /* We deal only with messages for loading and saving files here, using
- essentially the skeleton code given in the manual
- */
- switch (e->data.msg.hdr.action)
- {
-
- case wimp_MDATALOAD: /* insert data */
-
- switch(e->data.msg.data.dataload.i)
- {
-
- case FileA:
- {
- filetype = xferrecv_checkinsert(&PNMfile);
- dbox_setfield(d,FileA,PNMfile);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
- default:
- return FALSE;
- break;
- }
- default:
- return FALSE;
- break; /* ignore other messages */
- }
- }
- default: /* Ignore any other event */
- return FALSE;
- break;
- }
- return FALSE;
- }
- /****************************************************/
-
- BOOL PNMscalehandler( dbox d, wimp_eventstr *e, void *handle)
-
- /* handle events in PNMscale Dbox, particularly input file drags*/
- {
- int filetype;
- char *Scalefile;
-
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Deal with event */
- switch (e->e)
- {
- case wimp_ECLOSE:
- {
- return FALSE;
- break;
- }
- case wimp_ESEND:
- case wimp_ESENDWANTACK:
- {
- /* We deal only with messages for loading and saving files here, using
- essentially the skeleton code given in the manual
- */
- switch (e->data.msg.hdr.action)
- {
-
- case wimp_MDATALOAD: /* insert data */
-
- switch(e->data.msg.data.dataload.i)
- {
-
- case FileA:
- {
- filetype = xferrecv_checkinsert(&Scalefile);
- dbox_setfield(d,FileA,Scalefile);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
- default:
- return FALSE;
- break;
- }
- default:
- return FALSE;
- break; /* ignore other messages */
- }
- }
- default: /* Ignore any other event */
- return FALSE;
- break;
- }
- return FALSE;
- }
- /***********************************/
-
- BOOL PGMenhancehandler( dbox d, wimp_eventstr *e, void *handle)
-
- /* handle events in PGMenhance Dbox, particularly input file drags*/
- {
- int filetype;
- char *PGMfile;
-
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Deal with event */
- switch (e->e)
- {
- case wimp_ECLOSE:
- {
- return FALSE;
- break;
- }
- case wimp_ESEND:
- case wimp_ESENDWANTACK:
- {
- /* We deal only with messages for loading and saving files here, using
- essentially the skeleton code given in the manual
- */
- switch (e->data.msg.hdr.action)
- {
-
- case wimp_MDATALOAD: /* insert data */
-
- switch(e->data.msg.data.dataload.i)
- {
-
- case FileA:
- {
- filetype = xferrecv_checkinsert(&PGMfile);
- dbox_setfield(d,FileA,PGMfile);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
- default:
- return FALSE;
- break;
- }
- default:
- return FALSE;
- break; /* ignore other messages */
- }
- }
- default: /* Ignore any other event */
- return FALSE;
- break;
- }
- return FALSE;
- }
- /******************************************************/
-
-
- BOOL Cathandler( dbox d, wimp_eventstr *e, void *handle)
-
- /* handle events in PNMcat Dbox, particularly input file drags*/
- {
- int filetype;
- char *Catfile;
- char str1[24];
- char str2[256];
- int size = 256;
- int n;
-
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Deal with event */
- switch (e->e)
- {
- case wimp_ECLOSE:
- {
- return FALSE;
- break;
- }
- case wimp_ESEND:
- case wimp_ESENDWANTACK:
- {
- /* We deal only with messages for loading and saving files here, using
- essentially the skeleton code given in the manual
- */
- switch (e->data.msg.hdr.action)
- {
- case wimp_MDATALOAD: /* insert data */
- switch(e->data.msg.data.dataload.i)
- {
- case FileA:
- {
- filetype = xferrecv_checkinsert(&Catfile);
-
-
- dbox_getfield(d,FileA,str2,size);
-
-
- sprintf(str1," %s",Catfile);
- n = strlen (str1);
-
- strncat(str2,str1,n+1);
-
- dbox_setfield(d,FileA,str2);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
-
- default:
- return FALSE;
- break;
- }
-
- default:
- return FALSE;
- break; /* ignore other messages */
- }
- }
- default: /* Ignore any other event */
- return FALSE;
- break;
- }
- return FALSE;
- }
- /******************************************************/
-
-
- BOOL Convolhandler( dbox d, wimp_eventstr *e, void *handle)
-
-
- /* handle events in PNMconvol Dbox, particularly input file drags*/
- {
- int filetype;
- char *PNMfile;
-
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Deal with event */
- switch (e->e)
- {
- case wimp_ECLOSE:
- {
- return FALSE;
- break;
- }
- case wimp_ESEND:
- case wimp_ESENDWANTACK:
- {
- /* We deal only with messages for loading and saving files here, using
- essentially the skeleton code given in the manual
- */
- switch (e->data.msg.hdr.action)
- {
- case wimp_MDATALOAD: /* insert data */
- switch(e->data.msg.data.dataload.i)
- {
- case Image:
- {
- filetype = xferrecv_checkinsert(&PNMfile);
- dbox_setfield(d,Image,PNMfile);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
- case Filter:
- {
- filetype = xferrecv_checkinsert(&PNMfile);
- dbox_setfield(d,Filter,PNMfile);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
- default:
- return FALSE;
- break;
- }
-
- default:
- return FALSE;
- break; /* ignore other messages */
- }
- }
- default: /* Ignore any other event */
- return FALSE;
- break;
- }
- return FALSE;
- }
-
- /********************************************/
-
- BOOL Norawhandler( dbox d, wimp_eventstr *e, void *handle)
-
- /* handle events in PNMnoraw Dbox, particularly input file drags*/
- {
- int filetype;
- char *PNMfile;
-
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Deal with event */
- switch (e->e)
- {
- case wimp_ECLOSE:
- {
- return FALSE;
- break;
- }
- case wimp_ESEND:
- case wimp_ESENDWANTACK:
- {
- /* We deal only with messages for loading and saving files here, using
- essentially the skeleton code given in the manual
- */
- switch (e->data.msg.hdr.action)
- {
- case wimp_MDATALOAD: /* insert data */
- switch(e->data.msg.data.dataload.i)
- {
- case FileA:
- {
- filetype = xferrecv_checkinsert(&PNMfile);
- dbox_setfield(d,FileA,PNMfile);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
- default:
- return FALSE;
- break;
- }
-
- default:
- return FALSE;
- break; /* ignore other messages */
- }
- }
- default: /* Ignore any other event */
- return FALSE;
- break;
- }
- return FALSE;
- }
-
- /*********************************/
-
- BOOL PPMtopgmhandler( dbox d, wimp_eventstr *e, void *handle)
-
- /* handle events in PPMtopgm Dbox, particularly input file drags*/
- {
- int filetype;
- char *PPMfile;
-
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Deal with event */
- switch (e->e)
- {
- case wimp_ECLOSE:
- {
- return FALSE;
- break;
- }
- case wimp_ESEND:
- case wimp_ESENDWANTACK:
- {
- /* We deal only with messages for loading and saving files here, using
- essentially the skeleton code given in the manual
- */
- switch (e->data.msg.hdr.action)
- {
- case wimp_MDATALOAD: /* insert data */
- switch(e->data.msg.data.dataload.i)
- {
- case FileA:
- {
- filetype = xferrecv_checkinsert(&PPMfile);
- dbox_setfield(d,FileA,PPMfile);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
- default:
- return FALSE;
- break;
- }
-
- default:
- return FALSE;
- break; /* ignore other messages */
- }
- }
- default: /* Ignore any other event */
- return FALSE;
- break;
- }
- return FALSE;
- }
-
- /************************************/
-
- BOOL PGMedgehandler( dbox d, wimp_eventstr *e, void *handle)
-
- /* handle events in PGMedge Dbox, particularly input file drags*/
- {
- int filetype;
- char *PGMfile;
-
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Deal with event */
- switch (e->e)
- {
- case wimp_ECLOSE:
- {
- return FALSE;
- break;
- }
- case wimp_ESEND:
- case wimp_ESENDWANTACK:
- {
- /* We deal only with messages for loading and saving files here, using
- essentially the skeleton code given in the manual
- */
- switch (e->data.msg.hdr.action)
- {
- case wimp_MDATALOAD: /* insert data */
- switch(e->data.msg.data.dataload.i)
- {
- case FileA:
- {
- filetype = xferrecv_checkinsert(&PGMfile);
- dbox_setfield(d,FileA,PGMfile);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
- default:
- return FALSE;
- break;
- }
-
- default:
- return FALSE;
- break; /* ignore other messages */
- }
- }
- default: /* Ignore any other event */
- return FALSE;
- break;
- }
- return FALSE;
- }
- /************************************/
-
- BOOL PPMreliefhandler( dbox d, wimp_eventstr *e, void *handle)
-
- /* handle events in PPMrelief Dbox, particularly input file drags*/
- {
- int filetype;
- char *PPMfile;
-
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Deal with event */
- switch (e->e)
- {
- case wimp_ECLOSE:
- {
- return FALSE;
- break;
- }
- case wimp_ESEND:
- case wimp_ESENDWANTACK:
- {
- /* We deal only with messages for loading and saving files here, using
- essentially the skeleton code given in the manual
- */
- switch (e->data.msg.hdr.action)
- {
- case wimp_MDATALOAD: /* insert data */
- switch(e->data.msg.data.dataload.i)
- {
- case FileA:
- {
- filetype = xferrecv_checkinsert(&PPMfile);
- dbox_setfield(d,FileA,PPMfile);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
- default:
- return FALSE;
- break;
- }
-
- default:
- return FALSE;
- break; /* ignore other messages */
- }
- }
- default: /* Ignore any other event */
- return FALSE;
- break;
- }
- return FALSE;
- }
- /****************************************/
-
- BOOL ToYUVhandler( dbox d, wimp_eventstr *e, void *handle)
-
- /* handle events in PPMtoyuv Dbox, particularly input file drags*/
- {
- int filetype;
- char *PPMfile;
-
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Deal with event */
- switch (e->e)
- {
- case wimp_ECLOSE:
- {
- return FALSE;
- break;
- }
- case wimp_ESEND:
- case wimp_ESENDWANTACK:
- {
- /* We deal only with messages for loading and saving files here, using
- essentially the skeleton code given in the manual
- */
- switch (e->data.msg.hdr.action)
- {
- case wimp_MDATALOAD: /* insert data */
- switch(e->data.msg.data.dataload.i)
- {
- case FileA:
- {
- filetype = xferrecv_checkinsert(&PPMfile);
- dbox_setfield(d,FileA,PPMfile);
- xferrecv_insertfileok();
- return TRUE;
- break;
- }
- default:
- return FALSE;
- break;
- }
-
- default:
- return FALSE;
- break; /* ignore other messages */
- }
- }
- default: /* Ignore any other event */
- return FALSE;
- break;
- }
- return FALSE;
- }
- /******************************************************/
-
- void RunPNMConvol(void)
-
- /* build the PNMconvol command and call Runtask(cmd)*/
- {
- char cmd[cmdstr];
- char Ffile[128];
- char Pfile[128];
- dbox ConvolDbox;
- BOOL filling = TRUE;
- BOOL done = FALSE;
- int size = 128;
-
- int filetype = PBMplus;
- char *name = "<PBMfiles$Dir>.convolOUT";
- int estsize = 256;
- char *data = "convolout";
- void *fred;
-
- ConvolDbox = dbox_new("PNMConvol");
- dbox_raw_eventhandler(ConvolDbox, (dbox_raw_handler_proc)Convolhandler, fred);
-
- /*dbox_raw_eventhandler(ConvolDbox,Convolhandler,"CONVOL");*/
-
- dbox_showstatic(ConvolDbox);
-
- while (filling)
- {
- switch (dbox_fillin(ConvolDbox))
- {
- case RUN:
- {
- dbox_getfield(ConvolDbox,Filter,Ffile,size);
- dbox_getfield(ConvolDbox,Image,Pfile,size);
- saveas(filetype,name,estsize,saver_proc,0,0,data);
-
- if ( name != outfile)
- name = outfile;
-
- sprintf(cmd,"<PBMtkAPP$Dir>.PNMconvol %s %s > %s" , Ffile , Pfile, name);
- Runtask(cmd);
- done = TRUE;
- filling = FALSE;
- break;
- }
- case CANCEL:
- {
- dbox_setfield(ConvolDbox,Filter," ");
- dbox_setfield(ConvolDbox,Image," ");
- filling = FALSE;
- break;
- }
- default:
- break;
- }
- }
- dbox_dispose(&ConvolDbox);
- }
-
- /****************************************/
-
- void RunPNMnoraw(void)
-
- /* build the PNMnoraw command and call Runtask(cmd)*/
- {
- char cmd[cmdstr];
- char Pfile[128];
- dbox NorawDbox;
- BOOL filling = TRUE;
- BOOL done = FALSE;
- int size = 128;
-
- int filetype = PBMplus;
- char *name = "<PBMfiles$Dir>.norawOUT";
- int estsize = 256;
- char *data = "norawout";
- void *fred;
-
- NorawDbox = dbox_new("PNMnoraw");
- dbox_raw_eventhandler(NorawDbox,(dbox_raw_handler_proc)Norawhandler,fred);
-
- /*dbox_raw_eventhandler(NorawDbox,Norawhandler,"NORAW");*/
-
- dbox_showstatic(NorawDbox);
-
- while (filling)
- {
- switch (dbox_fillin(NorawDbox))
- {
- case RUN:
- {
- dbox_getfield(NorawDbox,FileA,Pfile,size);
- saveas(filetype,name,estsize,saver_proc,0,0,data);
-
- if ( name != outfile)
- name = outfile;
-
- sprintf(cmd,"<PBMtkAPP$Dir>.PNMnoraw %s > %s", Pfile, name);
- Runtask(cmd);
- done = TRUE;
- filling = FALSE;
- break;
- }
- case CANCEL:
- {
- dbox_setfield(NorawDbox,FileA," ");
- filling = FALSE;
- break;
- }
- default:
- break;
- }
- }
- dbox_dispose(&NorawDbox);
- }
-
- /***************************************/
-
- void RunPPMtopgm(void)
-
- /* build the PPMtopgm command and call Runtask(cmd)*/
- {
- char cmd[cmdstr];
- char Pfile[128];
- dbox PPMtopgmDbox;
- BOOL filling = TRUE;
- BOOL done = FALSE;
- int size = 128;
-
- int filetype = PBMplus;
- char *name = "<PBMfiles$Dir>.pgmOUT";
- int estsize = 256;
- char *data = "pgmout";
- void *fred;
-
- PPMtopgmDbox = dbox_new("PPMtopgm");
- dbox_raw_eventhandler(PPMtopgmDbox,(dbox_raw_handler_proc)PPMtopgmhandler,fred);
-
- /*dbox_raw_eventhandler(PPMtopgmDbox,PPMtopgmhandler,"PPMTOPGM");*/
-
- dbox_showstatic(PPMtopgmDbox);
-
- while (filling)
- {
- switch (dbox_fillin(PPMtopgmDbox))
- {
- case RUN:
- {
- dbox_getfield(PPMtopgmDbox,FileA,Pfile,size);
- saveas(filetype,name,estsize,saver_proc,0,0,data);
-
- if ( name != outfile)
- name = outfile;
-
- sprintf(cmd,"<PBMtkAPP$Dir>.PPMtopgm %s > %s", Pfile, name);
- Runtask(cmd);
- done = TRUE;
- filling = FALSE;
- break;
- }
- case CANCEL:
- {
- dbox_setfield(PPMtopgmDbox,FileA," ");
- filling = FALSE;
- break;
- }
- default:
- break;
- }
- }
- dbox_dispose(&PPMtopgmDbox);
- }
-
- /**************************************/
-
- void RunPGMedge(void)
-
- /* build the PGMedge command and call Runtask(cmd)*/
- {
- char cmd[cmdstr];
- char Pfile[128];
- dbox PGMedgeDbox;
- BOOL filling = TRUE;
- BOOL done = FALSE;
- int size = 128;
-
- int filetype = PBMplus;
- char *name = "<PBMfiles$Dir>.edgeOUT";
- int estsize = 256;
- char *data = "edge";
- void *fred;
-
- PGMedgeDbox = dbox_new("PGMedge");
- dbox_raw_eventhandler(PGMedgeDbox,(dbox_raw_handler_proc)PGMedgehandler,fred);
-
- /*dbox_raw_eventhandler(PGMedgeDbox,PGMedgehandler,"PGMEDGE");*/
-
- dbox_showstatic(PGMedgeDbox);
-
- while (filling)
- {
- switch (dbox_fillin(PGMedgeDbox))
- {
- case RUN:
- {
- dbox_getfield(PGMedgeDbox,FileA,Pfile,size);
- saveas(filetype,name,estsize,saver_proc,0,0,data);
-
- if ( name != outfile)
- name = outfile;
-
- sprintf(cmd,"<PBMtkAPP$Dir>.PGMedge %s > %s", Pfile, name);
- Runtask(cmd);
- done = TRUE;
- filling = FALSE;
- break;
- }
- case CANCEL:
- {
- dbox_setfield(PGMedgeDbox,FileA," ");
- filling = FALSE;
- break;
- }
- default:
- break;
- }
- }
- dbox_dispose(&PGMedgeDbox);
- }
- /**************************************/
-
- void RunPPMrelief(void)
-
- /* build the PPMrelief command and call Runtask(cmd)*/
- {
- char cmd[cmdstr];
- char Pfile[128];
- dbox PPMreliefDbox;
- BOOL filling = TRUE;
- BOOL done = FALSE;
- int size = 128;
-
- int filetype = PBMplus;
- char *name = "<PBMfiles$Dir>.reliefOUT";
- int estsize = 256;
- char *data = "relief";
- void *fred;
-
- PPMreliefDbox = dbox_new("PPMrelief");
- dbox_raw_eventhandler(PPMreliefDbox,(dbox_raw_handler_proc)PPMreliefhandler,fred);
-
- /*dbox_raw_eventhandler(PPMreliefDbox,PPMreliefhandler,"PPMRELIEF");*/
-
- dbox_showstatic(PPMreliefDbox);
-
- while (filling)
- {
- switch (dbox_fillin(PPMreliefDbox))
- {
- case RUN:
- {
- dbox_getfield(PPMreliefDbox,FileA,Pfile,size);
- saveas(filetype,name,estsize,saver_proc,0,0,data);
-
- if ( name != outfile)
- name = outfile;
-
- sprintf(cmd,"<PBMtkAPP$Dir>.PPMrelief %s > %s", Pfile, name);
- Runtask(cmd);
- done = TRUE;
- filling = FALSE;
- break;
- }
- case CANCEL:
- {
- dbox_setfield(PPMreliefDbox,FileA," ");
- filling = FALSE;
- break;
- }
- default:
- break;
- }
- }
- dbox_dispose(&PPMreliefDbox);
- }
- /*******************************************/
-
- void RunPPMtoyuv(void)
-
- /* build the PNMconvol command and call Runtask(cmd)*/
- {
- char cmd[cmdstr];
- char Pfile[128];
- dbox ToYUVDbox;
- BOOL filling = TRUE;
- BOOL done = FALSE;
- int size = 128;
-
- int filetype = PBMplus;
- char *name = "<PBMfiles$Dir>.yuvOUT";
- int estsize = 256;
- char *data = "yuvout";
-
- ToYUVDbox = dbox_new("PPMtoyuv");
- dbox_raw_eventhandler(ToYUVDbox,(dbox_raw_handler_proc)ToYUVhandler,"TOYUV");
- dbox_showstatic(ToYUVDbox);
-
- while (filling)
- {
- switch (dbox_fillin(ToYUVDbox))
- {
- case RUN:
- {
- dbox_getfield(ToYUVDbox,FileA,Pfile,size);
- saveas(filetype,name,estsize,saver_proc,0,0,data);
-
- if ( name != outfile)
- name = outfile;
-
- sprintf(cmd,"<PBMtkAPP$Dir>.PPMtoyuv %s > %s" , Pfile , name);
- Runtask(cmd);
- done = TRUE;
- filling = FALSE;
- break;
- }
- case CANCEL:
- {
- dbox_setfield(ToYUVDbox,FileA," ");
- filling = FALSE;
- break;
- }
- default:
- break;
- }
- }
- dbox_dispose(&ToYUVDbox);
- }
- /******************************************************/
-
-
- void RunPNMArith(void)
-
- /* build the PNMArith command and call Runtask(cmd)*/
- {
- char cmd[cmdstr];
- char Afile[100];
- char Bfile[100];
- char OP[5];
-
- dbox ArithDbox;
- BOOL filling = TRUE;
- BOOL done = FALSE;
- int size = 100;
-
- int filetype = PBMplus;
- char *name = "<PBMfiles$Dir>.arithOUT";
- int estsize = 256;
- char *data = "arithout";
-
- ArithDbox = dbox_new("PNMArith");
- dbox_raw_eventhandler(ArithDbox,(dbox_raw_handler_proc)Arithhandler,"ARITH");
- dbox_showstatic(ArithDbox);
-
- while (filling)
- {
- switch (dbox_fillin(ArithDbox))
- {
- case Plus:
- {
- dbox_setnumeric(ArithDbox,Plus,1);
- dbox_setnumeric(ArithDbox,Minus,0);
- dbox_setnumeric(ArithDbox,Mult,0);
- sprintf(OP,"-add ");
- break;
- }
- case Minus:
- {
- dbox_setnumeric(ArithDbox,Plus,0);
- dbox_setnumeric(ArithDbox,Minus,1);
- dbox_setnumeric(ArithDbox,Mult,0);
- sprintf(OP,"-sub ");
- break;
- }
- case Mult:
- {
- dbox_setnumeric(ArithDbox,Plus,0);
- dbox_setnumeric(ArithDbox,Minus,0);
- dbox_setnumeric(ArithDbox,Mult,1);
- sprintf(OP,"-mul ");
- break;
- }
- case RUN:
- {
- dbox_getfield(ArithDbox,FileA,Afile,size);
- dbox_getfield(ArithDbox,FileB,Bfile,size);
- saveas(filetype,name,estsize,saver_proc,0,0,data);
-
- if ( name != outfile)
- name = outfile;
-
- sprintf(cmd,"<PBMtkAPP$Dir>.PNMarith %s %s %s > %s",OP,Afile,Bfile,name);
- Runtask(cmd);
- filling = FALSE;
- done = TRUE;
- break;
-
- }
- case CANCEL:
- {
- dbox_setfield(ArithDbox,FileA," ");
- dbox_setfield(ArithDbox,FileB," ");
- filling = FALSE;
- break;
- }
- default:
- break;
- }
- }
- dbox_dispose(&ArithDbox);
- }
-
- /******************************************************/
-
-
- void RunPNMPaste(void)
-
- /* build the PNMPaste command and call Runtask(cmd)*/
- {
- char cmd[cmdstr];
- char Afile[100];
- char Bfile[100];
- char OP[5];
-
- int x;
- int y;
-
- dbox PasteDbox;
- BOOL filling = TRUE;
- BOOL done = FALSE;
- int size = 100;
-
- int filetype = PBMplus;
- char *name = "<PBMfiles$Dir>.pasteOUT";
- int estsize = 256;
- char *data = "pasteout";
-
- PasteDbox = dbox_new("PNMPaste");
- dbox_raw_eventhandler(PasteDbox,(dbox_raw_handler_proc)Pastehandler,"PASTE");
- dbox_showstatic(PasteDbox);
- x = dbox_getnumeric(PasteDbox,pastex);
- y = dbox_getnumeric(PasteDbox,pastey);
-
- while (filling)
- {
- switch (dbox_fillin(PasteDbox))
- {
- case minusx:
- {
- x = dbox_getnumeric(PasteDbox,pastex);
- x -= 1;
- dbox_setnumeric(PasteDbox,pastex,x);
- break;
- }
- case plusx:
- {
- x = dbox_getnumeric(PasteDbox,pastex);
- x += 1;
- dbox_setnumeric(PasteDbox,pastex,x);
- break;
- }
- case minusy:
- {
- y = dbox_getnumeric(PasteDbox,pastey);
- y -= 1;
- dbox_setnumeric(PasteDbox,pastey,y);
- break;
- }
- case plusy:
- {
- y = dbox_getnumeric(PasteDbox,pastey);
- y += 1;
- dbox_setnumeric(PasteDbox,pastey,y);
- break;
- }
- case replace:
- {
- dbox_setnumeric(PasteDbox,replace,1);
- dbox_setnumeric(PasteDbox,or,0);
- dbox_setnumeric(PasteDbox,and,0);
- dbox_setnumeric(PasteDbox,xor,0);
- sprintf(OP,"-rep ");
- break;
- }
- case or:
- {
- dbox_setnumeric(PasteDbox,replace,0);
- dbox_setnumeric(PasteDbox,or,1);
- dbox_setnumeric(PasteDbox,and,0);
- dbox_setnumeric(PasteDbox,xor,0);
- sprintf(OP,"-or ");
- break;
- }
- case and:
- {
- dbox_setnumeric(PasteDbox,replace,0);
- dbox_setnumeric(PasteDbox,or,0);
- dbox_setnumeric(PasteDbox,and,1);
- dbox_setnumeric(PasteDbox,xor,0);
- sprintf(OP,"-and ");
- break;
- }
- case xor:
- {
- dbox_setnumeric(PasteDbox,replace,0);
- dbox_setnumeric(PasteDbox,or,0);
- dbox_setnumeric(PasteDbox,and,0);
- dbox_setnumeric(PasteDbox,xor,1);
- sprintf(OP,"-xor ");
- break;
- }
- case RUN:
- {
- x = dbox_getnumeric(PasteDbox,pastex);
- y = dbox_getnumeric(PasteDbox,pastey);
- dbox_getfield(PasteDbox,FileA,Afile,size);
- dbox_getfield(PasteDbox,FileB,Bfile,size);
- saveas(filetype,name,estsize,saver_proc,0,0,data);
-
- if ( name != outfile)
- name = outfile;
-
- sprintf(cmd,"<PBMtkAPP$Dir>.PNMpaste %s %s %d %d %s > %s",OP,Afile,x,y,Bfile,name);
- Runtask(cmd);
- filling = FALSE;
- done = TRUE;
- break;
- }
- case CANCEL:
- {
- dbox_setfield(PasteDbox,FileA," ");
- dbox_setfield(PasteDbox,FileB," ");
- filling = FALSE;
- break;
- }
- default:
- break;
- }
- }
- dbox_dispose(&PasteDbox);
- }
-
- /******************************************************/
-
-
- void RunPPMPat(void)
-
- /* build the PPMPat command and call Runtask(cmd)*/
- {
- char cmd[cmdstr];
- char OP[5];
-
- int x;
- int y;
-
- dbox PatDbox;
- BOOL filling = TRUE;
-
- int filetype = PBMplus;
- char *name = "<PBMfiles$Dir>.patOUT";
- int estsize = 256;
- char *data = "patout";
-
- PatDbox = dbox_new("PPMPat");
- dbox_showstatic(PatDbox);
- x = dbox_getnumeric(PatDbox,patx);
- y = dbox_getnumeric(PatDbox,paty);
-
- while (filling)
- {
- switch (dbox_fillin(PatDbox))
- {
- case minuspatx:
- {
- x = dbox_getnumeric(PatDbox,patx);
- if (x > 1)
- x -= 1;
- dbox_setnumeric(PatDbox,patx,x);
- break;
- }
- case pluspatx:
- {
- x = dbox_getnumeric(PatDbox,patx);
- x += 1;
- dbox_setnumeric(PatDbox,patx,x);
- break;
- }
- case minuspaty:
- {
- y = dbox_getnumeric(PatDbox,paty);
- if(y > 1)
- y -= 1;
- dbox_setnumeric(PatDbox,paty,y);
- break;
- }
- case pluspaty:
- {
- y = dbox_getnumeric(PatDbox,paty);
- y += 1;
- dbox_setnumeric(PatDbox,paty,y);
- break;
- }
- case ging2:
- {
- dbox_setnumeric(PatDbox,ging2,1);
- dbox_setnumeric(PatDbox,ging3,0);
- dbox_setnumeric(PatDbox,madras,0);
- dbox_setnumeric(PatDbox,tartan,0);
- dbox_setnumeric(PatDbox,poles,0);
- dbox_setnumeric(PatDbox,squig,0);
- dbox_setnumeric(PatDbox,camo,0);
- dbox_setnumeric(PatDbox,anticamo,0);
- sprintf(OP,"-g2 ");
- break;
- }
- case ging3:
- {
- dbox_setnumeric(PatDbox,ging2,0);
- dbox_setnumeric(PatDbox,ging3,1);
- dbox_setnumeric(PatDbox,madras,0);
- dbox_setnumeric(PatDbox,tartan,0);
- dbox_setnumeric(PatDbox,poles,0);
- dbox_setnumeric(PatDbox,squig,0);
- dbox_setnumeric(PatDbox,camo,0);
- dbox_setnumeric(PatDbox,anticamo,0);
- sprintf(OP,"-g3 ");
- break;
- }
- case madras:
- {
- dbox_setnumeric(PatDbox,ging2,0);
- dbox_setnumeric(PatDbox,ging3,0);
- dbox_setnumeric(PatDbox,madras,1);
- dbox_setnumeric(PatDbox,tartan,0);
- dbox_setnumeric(PatDbox,poles,0);
- dbox_setnumeric(PatDbox,squig,0);
- dbox_setnumeric(PatDbox,camo,0);
- dbox_setnumeric(PatDbox,anticamo,0);
- sprintf(OP,"-mad ");
- break;
- }
- case tartan:
- {
- dbox_setnumeric(PatDbox,ging2,0);
- dbox_setnumeric(PatDbox,ging3,0);
- dbox_setnumeric(PatDbox,madras,0);
- dbox_setnumeric(PatDbox,tartan,1);
- dbox_setnumeric(PatDbox,poles,0);
- dbox_setnumeric(PatDbox,squig,0);
- dbox_setnumeric(PatDbox,camo,0);
- dbox_setnumeric(PatDbox,anticamo,0);
- sprintf(OP,"-tar ");
- break;
- }
- case poles:
- {
- dbox_setnumeric(PatDbox,ging2,0);
- dbox_setnumeric(PatDbox,ging3,0);
- dbox_setnumeric(PatDbox,madras,0);
- dbox_setnumeric(PatDbox,tartan,0);
- dbox_setnumeric(PatDbox,poles,1);
- dbox_setnumeric(PatDbox,squig,0);
- dbox_setnumeric(PatDbox,camo,0);
- dbox_setnumeric(PatDbox,anticamo,0);
- sprintf(OP,"-pol ");
- break;
- }
- case squig:
- {
- dbox_setnumeric(PatDbox,ging2,0);
- dbox_setnumeric(PatDbox,ging3,0);
- dbox_setnumeric(PatDbox,madras,0);
- dbox_setnumeric(PatDbox,tartan,0);
- dbox_setnumeric(PatDbox,poles,0);
- dbox_setnumeric(PatDbox,squig,1);
- dbox_setnumeric(PatDbox,camo,0);
- dbox_setnumeric(PatDbox,anticamo,0);
- sprintf(OP,"-squ ");
- break;
- }
- case camo:
- {
- dbox_setnumeric(PatDbox,ging2,0);
- dbox_setnumeric(PatDbox,ging3,0);
- dbox_setnumeric(PatDbox,madras,0);
- dbox_setnumeric(PatDbox,tartan,0);
- dbox_setnumeric(PatDbox,poles,0);
- dbox_setnumeric(PatDbox,squig,0);
- dbox_setnumeric(PatDbox,camo,1);
- dbox_setnumeric(PatDbox,anticamo,0);
- sprintf(OP,"-cam ");
- break;
- }
- case anticamo:
- {
- dbox_setnumeric(PatDbox,ging2,0);
- dbox_setnumeric(PatDbox,ging3,0);
- dbox_setnumeric(PatDbox,madras,0);
- dbox_setnumeric(PatDbox,tartan,0);
- dbox_setnumeric(PatDbox,poles,0);
- dbox_setnumeric(PatDbox,squig,0);
- dbox_setnumeric(PatDbox,camo,0);
- dbox_setnumeric(PatDbox,anticamo,1);
- sprintf(OP,"-ant ");
- break;
- }
- case RUN:
- {
- x = dbox_getnumeric(PatDbox,patx);
- y = dbox_getnumeric(PatDbox,paty);
- saveas(filetype,name,estsize,saver_proc,0,0,data);
-
- if ( name != outfile)
- name = outfile;
-
- sprintf(cmd,"<PBMtkAPP$Dir>.PPMPat %s %d %d > %s",OP,x,y,name);
- Runtask(cmd);
- filling = FALSE;
- break;
- }
- case CANCEL:
- {
- filling = FALSE;
- break;
- }
- default:
- break;
- }
- }
- dbox_dispose(&PatDbox);
- }
-
- /*****************************************************************/
-
-
- void RunPBMmake(void)
-
- /*build the PBMmake command and call Runtask(cmd)*/
- {
- char makecmd[cmdstr];
- char OPmake[5];
-
- int makex;
- int makey;
-
- dbox PBMmakeDbox;
- BOOL makefill = TRUE;
-
- int makefile = PBMplus;
- char *makename = "<PBMfiles$Dir>.PBMout";
- int makesize = 256;
- char *makedata = "pbmout";
-
- PBMmakeDbox = dbox_new("PBMmake");
- dbox_showstatic(PBMmakeDbox);
- makex = dbox_getnumeric(PBMmakeDbox,PBMmakex);
- makey = dbox_getnumeric(PBMmakeDbox,PBMmakey);
-
- while (makefill)
- {
- switch (dbox_fillin(PBMmakeDbox))
- {
- case PBMmakeminusx:
- {
- makex = dbox_getnumeric(PBMmakeDbox,PBMmakex);
- if (makex > 1)
- makex -= 1;
- dbox_setnumeric(PBMmakeDbox,PBMmakex,makex);
- break;
- }
- case PBMmakeplusx:
- {
- makex = dbox_getnumeric(PBMmakeDbox,PBMmakex);
- makex += 1;
- dbox_setnumeric(PBMmakeDbox,PBMmakex,makex);
- break;
- }
- case PBMmakeminusy:
- {
- makey = dbox_getnumeric(PBMmakeDbox,PBMmakey);
- if(makey > 1)
- makey -= 1;
- dbox_setnumeric(PBMmakeDbox,PBMmakey,makey);
- break;
- }
- case PBMmakeplusy:
- {
- makey = dbox_getnumeric(PBMmakeDbox,PBMmakey);
- makey += 1;
- dbox_setnumeric(PBMmakeDbox,PBMmakey,makey);
- break;
- }
- case PBMmakewhite:
- {
- dbox_setnumeric(PBMmakeDbox,PBMmakewhite,1);
- dbox_setnumeric(PBMmakeDbox,PBMmakeblack,0);
- dbox_setnumeric(PBMmakeDbox,PBMmakegrey,0);
- sprintf(OPmake,"-wh ");
- break;
- }
- case PBMmakeblack:
- {
- dbox_setnumeric(PBMmakeDbox,PBMmakewhite,0);
- dbox_setnumeric(PBMmakeDbox,PBMmakeblack,1);
- dbox_setnumeric(PBMmakeDbox,PBMmakegrey,0);
- sprintf(OPmake,"-bl ");
- break;
- }
- case PBMmakegrey:
- {
- dbox_setnumeric(PBMmakeDbox,PBMmakewhite,0);
- dbox_setnumeric(PBMmakeDbox,PBMmakeblack,0);
- dbox_setnumeric(PBMmakeDbox,PBMmakegrey,1);
- sprintf(OPmake,"-gr ");
- break;
- }
- case RUN:
- {
- makex = dbox_getnumeric(PBMmakeDbox,PBMmakex);
- makey = dbox_getnumeric(PBMmakeDbox,PBMmakey);
- saveas(makefile,makename,makesize,saver_proc,0,0,makedata);
-
- if ( makename != outfile)
- makename = outfile;
-
- sprintf(makecmd,"<PBMtkAPP$Dir>.PBMmake %s %d %d > %s",OPmake,makex,makey,makename);
- Runtask(makecmd);
- makefill = FALSE;
- break;
- }
- case CANCEL:
- {
- makefill = FALSE;
- break;
- }
- default:
- break;
- }
- }
- dbox_dispose(&PBMmakeDbox);
- }
-
-
- /******************************************************/
-
-
- void RunPGMcrater(void)
-
- /* build the PGMcrater command and call Runtask(cmd)*/
- {
- char cmd[cmdstr];
-
- char OP1[4];
- char OP2[4];
- char OP3[4];
- char OP4[4];
-
-
- int x;
- int y;
- int num;
- int g;
- double gamma;
-
- dbox CraterDbox;
- BOOL filling = TRUE;
-
- int filetype = PBMplus;
- char *name = "<PBMfiles$Dir>.craterOUT";
- int estsize = 256;
- char *data = "craterout";
- char *gammbuf;
- int bufsiz = 6;
-
- CraterDbox = dbox_new("PGMcrater");
- dbox_showstatic(CraterDbox);
- x = dbox_getnumeric(CraterDbox,CraterX);
- y = dbox_getnumeric(CraterDbox,CraterY);
-
- sprintf(OP1,"-n ");
- sprintf(OP2,"-h ");
- sprintf(OP3,"-w ");
- sprintf(OP4,"-g ");
-
- while (filling)
- {
- switch (dbox_fillin(CraterDbox))
- {
- case CraterXminus:
- {
- x = dbox_getnumeric(CraterDbox,CraterX);
- if (x > 1)
- x -= 1;
- dbox_setnumeric(CraterDbox,CraterX,x);
- break;
- }
- case CraterXplus:
- {
- x = dbox_getnumeric(CraterDbox,CraterX);
- x += 1;
- dbox_setnumeric(CraterDbox,CraterX,x);
- break;
- }
- case CraterYminus:
- {
- y = dbox_getnumeric(CraterDbox,CraterY);
- if(y > 1)
- y -= 1;
- dbox_setnumeric(CraterDbox,CraterY,y);
- break;
- }
- case CraterYplus:
- {
- y = dbox_getnumeric(CraterDbox,CraterY);
- y += 1;
- dbox_setnumeric(CraterDbox,CraterY,y);
- break;
- }
- case Craternumminus:
- {
- num = dbox_getnumeric(CraterDbox,Craternumber);
- if(num > 1)
- num -= 1;
- dbox_setnumeric(CraterDbox,Craternumber,num);
- break;
- }
- case Craternumplus:
- {
- num = dbox_getnumeric(CraterDbox,Craternumber);
- num += 1;
- dbox_setnumeric(CraterDbox,Craternumber,num);
- break;
- }
- case Cratergammaminus:
- {
- /*g = dbox_getnumeric(CraterDbox,Cratergamma);
- if(g > 0)
- g -= 1;
- dbox_setnumeric(CraterDbox,Cratergamma,g);*/
- dbox_getfield(CraterDbox,Cratergamma,gammbuf,bufsiz);
- gamma = atof(gammbuf);
- if(gamma > 0)
- gamma -= 0.1;
- sprintf(gammbuf,"%f",gamma);
- dbox_setfield(CraterDbox,Cratergamma,gammbuf);
- break;
- }
- case Cratergammaplus:
- {
- /*g = dbox_getnumeric(CraterDbox,Cratergamma);
- g += 1;
- dbox_setnumeric(CraterDbox,Cratergamma,g);*/
- dbox_getfield(CraterDbox,Cratergamma,gammbuf,bufsiz);
- gamma = atof(gammbuf);
- gamma += 0.1;
- sprintf(gammbuf,"%f",gamma);
- dbox_setfield(CraterDbox,Cratergamma,gammbuf);
- break;
- }
- case RUN:
- {
- x = dbox_getnumeric(CraterDbox,CraterX);
- y = dbox_getnumeric(CraterDbox,CraterY);
- num = dbox_getnumeric(CraterDbox,Craternumber);
- /*g = dbox_getnumeric(CraterDbox,Cratergamma);
- gamma = (float) g / 10.0;*/
- dbox_getfield(CraterDbox,Cratergamma,gammbuf,bufsiz);
- gamma = atof(gammbuf);
-
- saveas(filetype,name,estsize,saver_proc,0,0,data);
-
- if ( name != outfile)
- name = outfile;
-
- sprintf(cmd,"<PBMtkAPP$Dir>.PGMcrater %s %d %s %d %s %d %s %2.2lf > %s",OP1,num,OP2,y,OP3,x,OP4,gamma,name);
- Runtask(cmd);
- filling = FALSE;
- break;
- }
- case CANCEL:
- {
- filling = FALSE;
- break;
- }
- default:
- break;
- }
- }
- dbox_dispose(&CraterDbox);
- }
- /******************************************************/
-
-
- void RunPNMCat(void)
-
- /* build the PNMcat command and call Runtask(cmd)*/
- {
- char cmd[cmdstr];
- char Afile[550];
-
-
- char OP1[8] = " ";
- char OP2[5] = " ";
- char OP3[7] = " ";
-
- dbox CatDbox;
- BOOL filling = TRUE;
- BOOL done = FALSE;
- int size = 550;
-
- int filetype = PBMplus;
- char *name = "<PBMfiles$Dir>.catOUT";
- int estsize = 256;
- char *data = "catout";
-
- CatDbox = dbox_new("PNMCat");
- dbox_raw_eventhandler(CatDbox,(dbox_raw_handler_proc)Cathandler,"CAT");
- dbox_showstatic(CatDbox);
-
-
-
- while (filling)
- {
- switch (dbox_fillin(CatDbox))
- {
- case White:
- {
- dbox_setnumeric(CatDbox,White,1);
- dbox_setnumeric(CatDbox,Black,0);
- strcpy(OP1,"-white ");
- break;
- }
- case Black:
- {
- dbox_setnumeric(CatDbox,White,0);
- dbox_setnumeric(CatDbox,Black,1);
- strcpy(OP1,"-black ");
- break;
- }
- case Leftright:
- {
- dbox_setnumeric(CatDbox,Leftright,1);
- dbox_setnumeric(CatDbox,Topbottom,0);
- sprintf(OP2,"-lr ");
- break;
- }
- case Topbottom:
- {
- dbox_setnumeric(CatDbox,Leftright,0);
- dbox_setnumeric(CatDbox,Topbottom,1);
- sprintf(OP2,"-tb ");
- break;
- }
- case Top:
- {
- dbox_setnumeric(CatDbox,Top,1);
- dbox_setnumeric(CatDbox,Bottom,0);
- dbox_setnumeric(CatDbox,Left,0);
- dbox_setnumeric(CatDbox,Right,0);
- dbox_setnumeric(CatDbox,Topbottom,0);
- sprintf(OP3,"-jtop ");
- break;
- }
- case Bottom:
- dbox_setnumeric(CatDbox,Top,0);
- dbox_setnumeric(CatDbox,Bottom,1);
- dbox_setnumeric(CatDbox,Left,0);
- dbox_setnumeric(CatDbox,Right,0);
- dbox_setnumeric(CatDbox,Topbottom,0);
- sprintf(OP3,"-jbot ");
- break;
- case Left:
- dbox_setnumeric(CatDbox,Top,0);
- dbox_setnumeric(CatDbox,Bottom,0);
- dbox_setnumeric(CatDbox,Left,1);
- dbox_setnumeric(CatDbox,Right,0);
- dbox_setnumeric(CatDbox,Leftright,0);
- sprintf(OP3,"-jlef ");
- break;
- case Right:
- dbox_setnumeric(CatDbox,Top,0);
- dbox_setnumeric(CatDbox,Bottom,0);
- dbox_setnumeric(CatDbox,Left,0);
- dbox_setnumeric(CatDbox,Right,1);
- dbox_setnumeric(CatDbox,Leftright,0);
- sprintf(OP3,"-jrig ");
- break;
- case RUN:
- {
- dbox_getfield(CatDbox,FileA,Afile,size);
- saveas(filetype,name,estsize,saver_proc,0,0,data);
-
- if ( name != outfile)
- name = outfile;
-
- sprintf(cmd,"<PBMtkAPP$Dir>.PNMcat %s %s %s %s > %s",OP1,OP2,OP3,Afile,name);
- Runtask(cmd);
- filling = FALSE;
- done = TRUE;
- break;
- }
- case CANCEL:
- {
- dbox_setfield(CatDbox,FileA," ");
- filling = FALSE;
- break;
- }
- default:
- break;
- }
- }
- dbox_dispose(&CatDbox);
- }
- /******************************************************/
-
-
- void RunPNMCut(void)
-
- /* build the PNMcut command and call Runtask(cmd)*/
- {
- char cmd[cmdstr];
- char Afile[200];
-
-
- int x;
- int y;
- int width;
- int height;
-
- dbox CutDbox;
- BOOL filling = TRUE;
- BOOL done = FALSE;
- int size = 200;
-
- int filetype = PBMplus;
- char *name = "<PBMfiles$Dir>.cutOUT";
- int estsize = 256;
- char *data = "cutout";
-
-
- CutDbox = dbox_new("PNMCut");
- dbox_raw_eventhandler(CutDbox,(dbox_raw_handler_proc)Cuthandler,"CUT");
- dbox_showstatic(CutDbox);
- x = dbox_getnumeric(CutDbox,cutx);
- y = dbox_getnumeric(CutDbox,cuty);
- width = dbox_getnumeric(CutDbox,cutwidth);
- height = dbox_getnumeric(CutDbox,cutheight);
-
- while (filling)
- {
- switch (dbox_fillin(CutDbox))
- {
- case minuscutx:
- {
- x = dbox_getnumeric(CutDbox,cutx);
- x -= 1;
- dbox_setnumeric(CutDbox,cutx,x);
- break;
- }
- case pluscutx:
- {
- x = dbox_getnumeric(CutDbox,cutx);
- x += 1;
- dbox_setnumeric(CutDbox,cutx,x);
- break;
- }
- case minuscuty:
- {
- y = dbox_getnumeric(CutDbox,cuty);
- y -= 1;
- dbox_setnumeric(CutDbox,cuty,y);
- break;
- }
- case pluscuty:
- {
- y = dbox_getnumeric(CutDbox,cuty);
- y += 1;
- dbox_setnumeric(CutDbox,cuty,y);
- break;
- }
- case minuscutwidth:
- {
- width = dbox_getnumeric(CutDbox,cutwidth);
- width -= 1;
- dbox_setnumeric(CutDbox,cutwidth,width);
- break;
- }
- case pluscutwidth:
- {
- width = dbox_getnumeric(CutDbox,cutwidth);
- width += 1;
- dbox_setnumeric(CutDbox,cutwidth,width);
- break;
- }
- case minuscutheight:
- {
- height = dbox_getnumeric(CutDbox,cutheight);
- height -= 1;
- dbox_setnumeric(CutDbox,cutheight,height);
- break;
- }
- case pluscutheight:
- {
- height = dbox_getnumeric(CutDbox,cutheight);
- height += 1;
- dbox_setnumeric(CutDbox,cutheight,height);
- break;
- }
- case RUN:
- {
- x = dbox_getnumeric(CutDbox,cutx);
- y = dbox_getnumeric(CutDbox,cuty);
- width = dbox_getnumeric(CutDbox,cutwidth);
- height = dbox_getnumeric(CutDbox,cutheight);
- dbox_getfield(CutDbox,FileA,Afile,size);
- saveas(filetype,name,estsize,saver_proc,0,0,data);
-
- if ( name != outfile)
- name = outfile;
-
- sprintf(cmd,"<PBMtkAPP$Dir>.PNMcut %d %d %d %d %s > %s",x,y,width,height,Afile,name);
- Runtask(cmd);
- filling = FALSE;
- done = TRUE;
- break;
- }
- case CANCEL:
- {
- dbox_setfield(CutDbox,FileA," ");
- filling = FALSE;
- break;
- }
- default:
- break;
- }
-
- }
-
- dbox_dispose(&CutDbox);
- }
-
- /**************************************/
-
- void RunYUVtoPPM(void)
-
- /* build the YUVtoPPM command and call Runtask(cmd)*/
- {
- char cmd[cmdstr];
- char Afile[200];
-
- int width;
- int height;
-
- dbox YUVDbox;
- BOOL filling = TRUE;
- BOOL done = FALSE;
- int size = 200;
-
- int filetype = PBMplus;
- char *name = "<PBMfiles$Dir>.ppmOUT";
- int estsize = 256;
- char *data = "ppmout";
-
-
- YUVDbox = dbox_new("YUVtoPPM");
- dbox_raw_eventhandler(YUVDbox,(dbox_raw_handler_proc)YUVtoPPMhandler,"YUVtoPPM");
- dbox_showstatic(YUVDbox);
- width = dbox_getnumeric(YUVDbox,YUVwidth);
- height = dbox_getnumeric(YUVDbox,YUVheight);
-
- while (filling)
- {
- switch (dbox_fillin(YUVDbox))
- {
-
- case YUVwidthminus:
- {
- width = dbox_getnumeric(YUVDbox,YUVwidth);
- width -= 1;
- dbox_setnumeric(YUVDbox,YUVwidth,width);
- break;
- }
- case YUVwidthplus:
- {
- width = dbox_getnumeric(YUVDbox,YUVwidth);
- width += 1;
- dbox_setnumeric(YUVDbox,YUVwidth,width);
- break;
- }
- case YUVheightminus:
- {
- height = dbox_getnumeric(YUVDbox,YUVheight);
- height -= 1;
- dbox_setnumeric(YUVDbox,YUVheight,height);
- break;
- }
- case YUVheightplus:
- {
- height = dbox_getnumeric(YUVDbox,YUVheight);
- height += 1;
- dbox_setnumeric(YUVDbox,YUVheight,height);
- break;
- }
- case RUN:
- {
- width = dbox_getnumeric(YUVDbox,YUVwidth);
- height = dbox_getnumeric(YUVDbox,YUVheight);
- dbox_getfield(YUVDbox,FileA,Afile,size);
- saveas(filetype,name,estsize,saver_proc,0,0,data);
-
- if ( name != outfile)
- name = outfile;
-
- sprintf(cmd,"<PBMtkAPP$Dir>.YUVtoppm %d %d %s > %s",width,height,Afile,name);
- Runtask(cmd);
- filling = FALSE;
- done = TRUE;
- break;
- }
- case CANCEL:
- {
- dbox_setfield(YUVDbox,FileA," ");
- filling = FALSE;
- break;
- }
- default:
- break;
- }
-
- }
-
- dbox_dispose(&YUVDbox);
- }
-
-
- /**************************************/
-
- void RunPNMtile(void)
-
- /* build the PNMtile command and call Runtask(cmd)*/
- {
- char cmd[cmdstr];
- char Afile[200];
-
- int width;
- int height;
-
- dbox TileDbox;
- BOOL filling = TRUE;
- BOOL done = FALSE;
- int size = 200;
-
- int filetype = PBMplus;
- char *name = "<PBMfiles$Dir>.tileOUT";
- int estsize = 256;
- char *data = "tileout";
-
-
- TileDbox = dbox_new("PNMtile");
- dbox_raw_eventhandler(TileDbox,(dbox_raw_handler_proc)PNMtilehandler,"PNMtile");
- dbox_showstatic(TileDbox);
- width = dbox_getnumeric(TileDbox,TileX);
- height = dbox_getnumeric(TileDbox,TileY);
-
- while (filling)
- {
- switch (dbox_fillin(TileDbox))
- {
-
- case TileXminus:
- {
- width = dbox_getnumeric(TileDbox,TileX);
- width -= 1;
- dbox_setnumeric(TileDbox,TileX,width);
- break;
- }
- case TileXplus:
- {
- width = dbox_getnumeric(TileDbox,TileX);
- width += 1;
- dbox_setnumeric(TileDbox,TileX,width);
- break;
- }
- case TileYminus:
- {
- height = dbox_getnumeric(TileDbox,TileY);
- height -= 1;
- dbox_setnumeric(TileDbox,TileY,height);
- break;
- }
- case TileYplus:
- {
- height = dbox_getnumeric(TileDbox,TileY);
- height += 1;
- dbox_setnumeric(TileDbox,TileY,height);
- break;
- }
- case RUN:
- {
- width = dbox_getnumeric(TileDbox,TileX);
- height = dbox_getnumeric(TileDbox,TileY);
- dbox_getfield(TileDbox,FileA,Afile,size);
- saveas(filetype,name,estsize,saver_proc,0,0,data);
-
- if ( name != outfile)
- name = outfile;
-
- sprintf(cmd,"<PBMtkAPP$Dir>.PNMtile %d %d %s > %s",width,height,Afile,name);
- Runtask(cmd);
- filling = FALSE;
- done = TRUE;
- break;
- }
- case CANCEL:
- {
- dbox_setfield(TileDbox,FileA," ");
- filling = FALSE;
- break;
- }
- default:
- break;
- }
-
- }
-
- dbox_dispose(&TileDbox);
- }
-
- /**************************************/
-
- void RunPGMenhance(void)
-
- /* build the PGMenhance command and call Runtask(cmd)*/
- {
- char cmd[cmdstr];
- char Afile[200];
-
- int level;
-
-
- dbox PGMenhance;
- BOOL filling = TRUE;
- BOOL done = FALSE;
- int size = 200;
-
- int filetype = PBMplus;
- char *name = "<PBMfiles$Dir>.pgmenhOUT";
- int estsize = 256;
- char *data = "pgmenhout";
-
-
- PGMenhance = dbox_new("PGMenhance");
- dbox_raw_eventhandler(PGMenhance,(dbox_raw_handler_proc)PGMenhancehandler,"PGMenhance");
- dbox_showstatic(PGMenhance);
- level = dbox_getnumeric(PGMenhance,enhlevel);
-
-
- while (filling)
- {
- switch (dbox_fillin(PGMenhance))
- {
-
- case enhminus:
- {
- level = dbox_getnumeric(PGMenhance,enhlevel);
- if (level > 1)
- level -= 1;
- dbox_setnumeric(PGMenhance,enhlevel,level);
- break;
- }
- case enhplus:
- {
- level = dbox_getnumeric(PGMenhance,enhlevel);
- if (level < 9)
- level += 1;
- dbox_setnumeric(PGMenhance,enhlevel,level);
- break;
- }
- case RUN:
- {
- level = dbox_getnumeric(PGMenhance,enhlevel);
- dbox_getfield(PGMenhance,FileA,Afile,size);
- saveas(filetype,name,estsize,saver_proc,0,0,data);
-
- if ( name != outfile)
- name = outfile;
-
- sprintf(cmd,"<PBMtkAPP$Dir>.PGMenhance -%d %s > %s",level,Afile,name);
- Runtask(cmd);
- filling = FALSE;
- done = TRUE;
- break;
- }
- case CANCEL:
- {
- dbox_setfield(PGMenhance,FileA," ");
- filling = FALSE;
- break;
- }
- default:
- break;
- }
-
- }
-
- dbox_dispose(&PGMenhance);
- }
-
-
- /**************************************/
-
- void RunPNMscale(void)
-
- /* build the PNMscale command and call Runtask(cmd)*/
- {
- char cmd[cmdstr];
- char Afile[256];
-
- int choice = 1;
- double realxyfact;
- double realxfact;
- double realyfact;
- int intxysize;
- int intxsize;
- int intysize;
-
-
- dbox ScaleDbox;
- BOOL filling = TRUE;
- int size = 256;
-
- int filetype = PBMplus;
- char *name = "<PBMfiles$Dir>.scaleOUT";
- int estsize = 256;
- char *data = "scaleout";
- char *scalebuf;
- int bufsiz = 6;
-
- ScaleDbox = dbox_new("PNMscale");
- dbox_raw_eventhandler(ScaleDbox,(dbox_raw_handler_proc)PNMscalehandler,"PNMscale");
- dbox_showstatic(ScaleDbox);
-
-
-
- while (filling)
- {
- switch (dbox_fillin(ScaleDbox))
- {
-
- case regfactminus:
- {
- dbox_getfield(ScaleDbox,regfact,scalebuf,bufsiz);
- realxyfact = atof(scalebuf);
- if (realxyfact > 0.1)
- realxyfact -= 0.1;
- sprintf(scalebuf,"%2.1f",realxyfact);
- dbox_setfield(ScaleDbox,regfact,scalebuf);
- break;
- }
- case regfactplus:
- {
- dbox_getfield(ScaleDbox,regfact,scalebuf,bufsiz);
- realxyfact = atof(scalebuf);
- realxyfact += 0.1;
- sprintf(scalebuf,"%2.1f",realxyfact);
- dbox_setfield(ScaleDbox,regfact,scalebuf);
- break;
- }
- case xfactplus:
- {
- dbox_getfield(ScaleDbox,xfact,scalebuf,bufsiz);
- realxfact = atof(scalebuf);
- realxfact += 0.1;
- sprintf(scalebuf,"%2.1f",realxfact);
- dbox_setfield(ScaleDbox,xfact,scalebuf);
- break;
- }
- case xfactminus:
- {
- dbox_getfield(ScaleDbox,xfact,scalebuf,bufsiz);
- realxfact = atof(scalebuf);
- if (realxfact > 0.1)
- realxfact -= 0.1;
- sprintf(scalebuf,"%2.1f",realxfact);
- dbox_setfield(ScaleDbox,xfact,scalebuf);
- break;
- }
- case yfactminus:
- {
- dbox_getfield(ScaleDbox,yfact,scalebuf,bufsiz);
- realyfact = atof(scalebuf);
- if (realyfact > 0.1)
- realyfact -= 0.1;
- sprintf(scalebuf,"%2.1f",realyfact);
- dbox_setfield(ScaleDbox,yfact,scalebuf);
- break;
- }
- case yfactplus:
- {
- dbox_getfield(ScaleDbox,yfact,scalebuf,bufsiz);
- realyfact = atof(scalebuf);
- realyfact += 0.1;
- sprintf(scalebuf,"%2.1f",realyfact);
- dbox_setfield(ScaleDbox,yfact,scalebuf);
- break;
- }
- case squareminus:
- {
- intxysize = dbox_getnumeric(ScaleDbox,squaresize);
- if (intxysize > 1)
- intxysize -= 1;
- dbox_setnumeric(ScaleDbox,squaresize,intxysize);
- break;
- }
- case squareplus:
- {
- intxysize = dbox_getnumeric(ScaleDbox,squaresize);
- intxysize += 1;
- dbox_setnumeric(ScaleDbox,squaresize,intxysize);
- break;
- }
- case rectwidminus:
- {
- intxsize = dbox_getnumeric(ScaleDbox,rectwid);
- if (intxsize > 1)
- intxsize -= 1;
- dbox_setnumeric(ScaleDbox,rectwid,intxsize);
- break;
- }
- case rectwidplus:
- {
- intxsize = dbox_getnumeric(ScaleDbox,rectwid);
- intxsize += 1;
- dbox_setnumeric(ScaleDbox,rectwid,intxsize);
- break;
- }
- case rectheightminus:
- {
- intysize = dbox_getnumeric(ScaleDbox,rectheight);
- if (intysize > 1)
- intysize -= 1;
- dbox_setnumeric(ScaleDbox,rectheight,intysize);
- break;
- }
- case rectheightplus:
- {
- intysize = dbox_getnumeric(ScaleDbox,rectheight);
- intysize += 1;
- dbox_setnumeric(ScaleDbox,rectheight,intysize);
- break;
- }
- case regscale:
- {
- dbox_setnumeric(ScaleDbox,regscale,1);
- dbox_setnumeric(ScaleDbox,iregfact,0);
- dbox_setnumeric(ScaleDbox,square,0);
- dbox_setnumeric(ScaleDbox,rect,0);
- choice = 1;
- break;
- }
- case iregfact:
- {
- dbox_setnumeric(ScaleDbox,regscale,0);
- dbox_setnumeric(ScaleDbox,iregfact,1);
- dbox_setnumeric(ScaleDbox,square,0);
- dbox_setnumeric(ScaleDbox,rect,0);
- choice = 2;
- break;
- }
- case square:
- {
- dbox_setnumeric(ScaleDbox,regscale,0);
- dbox_setnumeric(ScaleDbox,iregfact,0);
- dbox_setnumeric(ScaleDbox,square,1);
- dbox_setnumeric(ScaleDbox,rect,0);
- choice = 3;
- break;
- }
- case rect:
- {
- dbox_setnumeric(ScaleDbox,regscale,0);
- dbox_setnumeric(ScaleDbox,iregfact,0);
- dbox_setnumeric(ScaleDbox,square,0);
- dbox_setnumeric(ScaleDbox,rect,1);
- choice = 4;
- break;
- }
- case RUN:
- {
- dbox_getfield(ScaleDbox,FileA,Afile,size);
- saveas(filetype,name,estsize,saver_proc,0,0,data);
- if ( name != outfile)
- name = outfile;
- switch (choice)
- {
- case 1:
- {
- dbox_getfield(ScaleDbox,regfact,scalebuf,bufsiz);
- realxyfact = atof(scalebuf);
- sprintf(cmd,"<PBMtkAPP$Dir>.PNMscale %2.1f %s > %s",realxyfact,Afile,name);
- Runtask(cmd);
- filling = FALSE;
- break;
- }
- case 2:
- {
- dbox_getfield(ScaleDbox,xfact,scalebuf,bufsiz);
- realxfact = atof(scalebuf);
- dbox_getfield(ScaleDbox,yfact,scalebuf,bufsiz);
- realyfact = atof(scalebuf);
- sprintf(cmd,"<PBMtkAPP$Dir>.PNMscale -xscale %2.1f -yscale %2.2lf %s > %s", realxfact,realyfact,Afile,name);
- Runtask(cmd);
- filling = FALSE;
- break;
- }
- case 3:
- {
- intxysize = dbox_getnumeric(ScaleDbox,squaresize);
- sprintf(cmd,"<PBMtkAPP$Dir>.PNMscale -xysize %d %d %s > %s", intxysize,intxysize,Afile,name);
- Runtask(cmd);
- filling = FALSE;
- break;
- }
- case 4:
- {
- intxsize = dbox_getnumeric(ScaleDbox,rectwid);
- intysize = dbox_getnumeric(ScaleDbox,rectheight);
- sprintf(cmd,"<PBMtkAPP$Dir>.PNMscale -xsize %d -ysize %d %s > %s", intxsize,intysize,Afile,name);
- Runtask(cmd);
- filling = FALSE;
- break;
- }
- break;
- }
- }
- case CANCEL:
- {
- dbox_setfield(ScaleDbox,FileA," ");
- filling = FALSE;
- break;
- }
- default:
- break;
- }
-
- }
-
- dbox_dispose(&ScaleDbox);
- }
-
-
- /***open the directory which is the default storage area for images***/
-
- void openimagedir (void)
-
- {
- wimp_eventstr *ev;
- ev->data.msg.hdr.action = 0x0400;
- ev->data.msg.hdr.size =128;
- ev->data.msg.hdr.your_ref=0;
- sprintf(ev->data.msg.data.chars," <PBMtk$Dir>.PBMfiles");
- wimpt_noerr(wimp_sendmessage (wimp_ESEND, &ev->data.msg, 0));
- }
-
- /***************************************/
- /***open the directory which is the default storage area for images***/
-
- void openfiltersdir (void)
-
- {
- wimp_eventstr *ev;
- ev->data.msg.hdr.action = 0x0400;
- ev->data.msg.hdr.size =128;
- ev->data.msg.hdr.your_ref=0;
- sprintf(ev->data.msg.data.chars," <PBMtk$Dir>.Filters");
- wimpt_noerr(wimp_sendmessage (wimp_ESEND, &ev->data.msg, 0));
- }
- /***************************** WINDOW FUNCTIONS *****************************/
-
-
- /*--- Create the window, yielding its handle. Return TRUE if ok. ---*/
- static BOOL create_window(char *name, wimp_w *handle)
- {
- wimp_wind *window; /* Pointer to window definition */
-
- /* Find template for the window */
- window = template_syshandle(name);
- if (window == 0)
- return FALSE;
-
- /* Create the window, dealing with errors */
- return (wimpt_complain(wimp_create_wind(window, handle)) == 0);
- }
- /******************************************************/
-
-
- /*--- Individual event routines for the window ---*/
- static void example_redraw_window(wimp_w handle)
- {
- /* Redrawing the window here does nothing - just go through the loop */
- int more;
- wimp_redrawstr r;
-
- /* Start the redraw */
- r.w = handle;
- wimpt_noerr(wimp_redraw_wind(&r, &more));
-
- /* Do the redraw loop */
- while (more)
- {
- wimp_get_rectangle(&r, &more);
- }
- }
- /******************************************************/
-
-
- static void open_window(wimp_openstr *o)
- {
- /* Just pass the open request on to the wimp */
- wimpt_noerr(wimp_open_wind(o));
- }
-
-
-
- /*--- Event handler called on a left click on the icon. ---*/
- static void example_iconclick(wimp_i icon)
- {
- icon = icon; /* We don't need the handle: this stops compiler warning */
-
- /* Open the window - only one allowed */
- if (window_open)
- werr(FALSE, "Only one window may be opened");
- else
- {
- wimp_wstate state;
-
- /* Get the state of the window */
- if (wimpt_complain(wimp_get_wind_state(win_handle, &state)) == 0)
- {
- state.o.behind = -1; /* Make sure window is opened in front */
- wimpt_noerr(wimp_open_wind(&state.o));
- window_open = TRUE;
- }
- }
- }
- /******************************************************/
-
-
- /*--- Display the program info box - called from the menu processor. ---*/
- static void example_info_about_program(void)
- {
- dbox d; /* Dialogue box handle */
-
- /* Create the dialogue box */
- if (d = dbox_new("ProgInfo"), d != NULL)
- {
- /* Fill in the version number */
- dbox_setfield(d, Example_info_field, Version_String);
-
- /* Show the dialogue box */
- dbox_show(d);
-
- /* Keep it on the screen as long as needed */
- dbox_fillin(d);
-
- /* Dispose of the dialogue box */
- dbox_dispose(&d);
- }
- }
- /******************************************************/
-
-
- /*--- Event handler for the menu. ---*/
- static void Icon_menuproc(void *handle, char *hit)
- {
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Find which menu item was hit and take action as appropriate */
- switch (hit[0])
- {
- case Icon_menu_info:
- example_info_about_program();
- break;
-
- case Icon_menu_quit:
- /* Exit from the program. The wimp gets rid of the window and icon */
- exit(0);
- }
- }
- /******************************************************/
-
-
- static menu Win_menumaker(void *handle)
-
- /*---Menu maker for the window-------*/
-
- {
- handle = handle;
-
- /* menu_setflags(Win_menu,Win_menu_read,0,1);
- menu_setflags(Win_menu,Win_menu_write,0,1);
- menu_setflags(Win_menu,Win_menu_pbm,0,1);
- menu_setflags(Win_menu,Win_menu_pgm,0,1);
- menu_setflags(Win_menu,Win_menu_pgm,0,1);
- menu_setflags(Win_menu,Win_menu_ppm,0,1);
- menu_setflags(Win_menu,Win_menu_help,0,1);*/
-
- menu_setflags(Rd_menu,Rd_menu_FITS,0,1);
- menu_setflags(Rd_menu,Rd_menu_RawtoPGM,0,1);
- menu_setflags(Rd_menu,Rd_menu_RawtoPPM,0,1);
-
- menu_setflags(Wr_menu,Wr_menu_toFITS,0,1);
- menu_setflags(Wr_menu,Wr_menu_toACAD,0,1);
- menu_setflags(Wr_menu,Wr_menu_toPS,0,1);
-
- /*menu_setflags(PBM_menu,PBM_menu_make,0,1);*/
-
- menu_setflags(PBM_menu,PBM_menu_mask,0,1);
- menu_setflags(PBM_menu,PBM_menu_reduce,0,1);
- menu_setflags(PBM_menu,PBM_menu_text,0,1);
-
- menu_setflags(PGM_menu,PGM_menu_Bentley,0,1);
-
- /*menu_setflags(PGM_menu,PGM_menu_Crater,0,1);*/
-
- /*menu_setflags(PGM_menu,PGM_menu_Edge,0,1);*/
-
- /*menu_setflags(PGM_menu,PGM_menu_Enhance,0,1);*/
-
- menu_setflags(PGM_menu,PGM_menu_Histo,0,1);
- menu_setflags(PGM_menu,PGM_menu_Norm,0,1);
- menu_setflags(PGM_menu,PGM_menu_Oil,0,1);
- menu_setflags(PGM_menu,PGM_menu_Ramp,0,1);
- menu_setflags(PGM_menu,PGM_menu_toPBM,0,1);
- menu_setflags(PGM_menu,PGM_menu_RGB3toPPM,0,1);
-
- menu_setflags(PPM_menu,PPM_menu_Dither,0,1);
- menu_setflags(PPM_menu,PPM_menu_Forge,0,1);
- menu_setflags(PPM_menu,PPM_menu_Histo,0,1);
- menu_setflags(PPM_menu,PPM_menu_Make,0,1);
-
- /*menu_setflags(PPM_menu,PPM_menu_Pattern,0,1);*/
-
- menu_setflags(PPM_menu,PPM_menu_Quantize,0,1);
-
- /* menu_setflags(PPM_menu,PPM_menu_Relief,0,1);
- menu_setflags(PPM_menu,PPM_menu_toPGM,0,1);*/
-
-
- menu_setflags(PNM_menu,PNM_menu_Crop,0,1);
- menu_setflags(PNM_menu,PNM_menu_Depth,0,1);
- menu_setflags(PNM_menu,PNM_menu_File,0,1);
- menu_setflags(PNM_menu,PNM_menu_Flip,0,1);
- menu_setflags(PNM_menu,PNM_menu_Gamma,0,1);
-
- /*menu_setflags(PNM_menu,PNM_menu_NoRaw,0,1);*/
-
- /*menu_setflags(PNM_menu,PNM_menu_Paste,0,1);*/
-
- menu_setflags(PNM_menu,PNM_menu_Rotate,0,1);
-
- /*menu_setflags(PNM_menu,PNM_menu_Scale,0,1);*/
-
- menu_setflags(PNM_menu,PNM_menu_Shear,0,1);
-
- /*menu_setflags(PNM_menu,PNM_menu_Tile,0,1);*/
-
- return handle;
- }
- /******************************************************/
-
-
- /*--- Event handler for the menu. ---*/
- static void Win_menuproc(void *handle, char *hit)
- {
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Find which menu item was hit and take action as appropriate */
- switch (hit[0])
- {
- case Win_menu_read:
- switch (hit[1])
- {
- /*case Rd_menu_FITS:
- case Rd_menu_RawtoPGM:
- case Rd_menu_RawtoPPM:*/
- case Rd_menu_YUVtoPPM:
- RunYUVtoPPM();
- break;
- }
- break;
-
- case Win_menu_write:
- switch (hit[1])
- {
- /* case Wr_menu_toFITS:
- case Wr_menu_toACAD:
- case Wr_menu_toPS:*/
- case Wr_menu_PPMtoyuv:
- RunPPMtoyuv();
- break;
-
- }
- break;
-
- case Win_menu_pbm:
- switch (hit[1])
- {
- case PBM_menu_make:
- RunPBMmake();
- break;
-
- /*case PBM_menu_mask:
- case PBM_menu_reduce:
- case PBM_menu_text:*/
- }
- break;
-
- case Win_menu_pgm:
- switch (hit[1])
- {
- /*case PGM_menu_Bentley:*/
-
- case PGM_menu_Crater:
- RunPGMcrater();
- break;
-
- case PGM_menu_Edge:
- RunPGMedge();
- break;
-
- case PGM_menu_Enhance:
- RunPGMenhance();
- break;
-
- /*case PGM_menu_Histo:
- case PGM_menu_Norm:
- case PGM_menu_Oil:
- case PGM_menu_Ramp:
- case PGM_menu_toPBM:
- case PGM_menu_RGB3toPPM:*/
- }
- break;
-
- case Win_menu_ppm:
- switch (hit[1])
- {
- /*case PPM_menu_Dither:
- case PPM_menu_Forge:
- case PPM_menu_Histo:
- case PPM_menu_Make:*/
-
- case PPM_menu_Pattern:
- RunPPMPat();
- break;
-
- /*case PPM_menu_Quantize:*/
-
- case PPM_menu_Relief:
- RunPPMrelief();
- break;
-
- case PPM_menu_toPGM:
- RunPPMtopgm();
- break;
-
- }
- break;
-
- case Win_menu_pnm:
- switch (hit[1])
- {
- case PNM_menu_Arith:
- RunPNMArith();
- break;
-
- case PNM_menu_Concat:
- RunPNMCat();
- break;
-
- case PNM_menu_Convol:
- RunPNMConvol();
- break;
- case PNM_menu_Cut:
- RunPNMCut();
- break;
- case PNM_menu_Paste:
- RunPNMPaste();
- break;
- case PNM_menu_NoRaw:
- RunPNMnoraw();
- break;
- case PNM_menu_Scale:
- RunPNMscale();
- break;
- case PNM_menu_Tile:
- RunPNMtile();
- break;
- }
- case Win_menu_help:
- break;
-
- case Win_menu_images:
- openimagedir();
- break;
-
- case Win_menu_filters:
- openfiltersdir();
- break;
-
- case Win_menu_quit:
- exit(0);
- break;
-
-
- default:
- break;
- }
- }
- /******************************************************/
-
-
- /*--- Event handler for window. ---*/
- static void PBMtk_win_event_handler(wimp_eventstr *e, void *handle)
- {
- handle = handle; /* We don't need handle: this stops compiler warning */
-
- /* Deal with event */
- switch (e->e)
- {
- case wimp_EREDRAW:
- example_redraw_window(e->data.o.w);
- break;
-
- case wimp_EOPEN:
- open_window(&e->data.o);
- break;
-
- case wimp_ECLOSE: /* Pass on close request */
- wimpt_noerr(wimp_close_wind(e->data.o.w));
- window_open = FALSE;
-
- case wimp_EUSERDRAG:
- /*werr(0,"EUSERDRAG");*/
- switch (e->data.msg.hdr.action)
- case wimp_MDATASAVE:
- {
- /*werr(0,"datasave message");*/
- break;
- }
- default: /* Ignore any other event */
- break;
- }
- }
-
- /****************************** INITIALISATION ******************************/
-
- /*--- Initialise the program, returning TRUE if it was all OK. ---*/
- static BOOL PBMtk_initialise(void)
- {
- /* RISC_OSlib initialisation */
- wimpt_init("PBMtk"); /* Main Wimp initialisation */
- res_init("PBMtk"); /* Resources */
- resspr_init(); /* Application sprites */
- template_init(); /* Templates */
- dbox_init(); /* Dialogue boxes */
- win_init(); /* window event system */
- visdelay_init();
-
- /* Create the main window, and declare its event handler */
- if (!create_window("Output", &win_handle))
- return FALSE; /* Window creation failed */
- win_register_event_handler(win_handle, PBMtk_win_event_handler, 0);
-
-
- /* Create the menu tree */
- if (Icon_menu = menu_new("PBMtk", ">Info,Quit"), Icon_menu == NULL)
- return FALSE; /* Menu create failed */
-
- if (Win_menu = menu_new("PBMtk","Readin,Writeout|PBM,PGM,PPM,PNM|Help,Images,Filters,Quit"), Win_menu == NULL)
- return FALSE; /* Menu create failed */
-
- if (Rd_menu = menu_new("Readin","FITStoPGM,RawtoPGM,RawtoPPM,YUVtoPPM"),Rd_menu == NULL)
- return FALSE; /* menu create failed*/
-
- menu_submenu(Win_menu,Win_menu_read,Rd_menu);
-
- if (Wr_menu = menu_new("Writeout","PGMtoFITS,PPMtoACAD,PNMtoPS,PPMtoYUV"),Wr_menu == NULL)
- return FALSE; /* menu create failed */
-
- menu_submenu(Win_menu,Win_menu_write,Wr_menu);
-
- if(PBM_menu = menu_new("PBM","Make,Mask,Reduce,Text"),PBM_menu == NULL)
- return FALSE; /* menu create failed */
-
- menu_submenu(Win_menu,Win_menu_pbm,PBM_menu);
-
- if(PGM_menu = menu_new("PGM","Bentley,Crater,Edge,Enhance,Histogram,Normalize,Oil,Ramp,To-PBM,RGB3toPPM"),PGM_menu == NULL)
- return FALSE; /* menu create failed */
-
- menu_submenu(Win_menu,Win_menu_pgm,PGM_menu);
-
- if(PPM_menu = menu_new("PPM","Dither,Forge,Histogram,Make,Pattern,Quantize,Relief,To-PGM"),PPM_menu == NULL)
- return FALSE; /* menu create failed */
-
- menu_submenu(Win_menu,Win_menu_ppm,PPM_menu);
-
- if(PNM_menu = menu_new("PNM","Arithmetic,Concatenate,Convolution,Crop,Cut,Depth,File,Flip,Gamma,NoRaw,Paste,Rotate,Scale,Shear,Tile"),PNM_menu == NULL)
- return FALSE; /* menu create failed */
-
- menu_submenu(Win_menu,Win_menu_pnm,PNM_menu);
-
- /* Set up the icon on the icon bar, and declare its event handlers */
- baricon("!PBMtk", (int)resspr_area(), example_iconclick);
- if (!event_attachmenu(win_ICONBAR, Icon_menu, Icon_menuproc, 0))
- return FALSE; /* Unable to attach menu */
-
- if (!event_attachmenumaker(win_handle, Win_menumaker, Win_menuproc, Win_menu))
- return FALSE; /* Unable to attach menu */
-
- /* All went ok */
- return TRUE;
- }
-
- /******************************* MAIN PROGRAM ********************************/
-
- /*--- Main entry point. ---*/
- int main()
- {
- if (PBMtk_initialise())
- {
- /* The main event loop */
- while (TRUE)
- event_process();
- }
-
- return 0;
- }
-