home *** CD-ROM | disk | FTP | other *** search
- #include <clib/alib_protos.h>
- #include <pragma/dos_lib.h>
- #include <pragma/exec_lib.h>
- #include <pragma/icon_lib.h>
- #include <pragma/intuition_lib.h>
- #include <pragma/muimaster_lib.h>
- #include <tools/tools.h>
- #include <stdlib.h>
- #include <string.h>
-
- struct Arg
- {
- long *mode,*res,*dither,*depth;
- };
-
- APTR
- app,window,
- CY_Mode,CY_Res,CY_Dither,SLI_Depth,
- BT_Save,BT_Use,BT_Quit;
-
- char
- *cycle_mode[]={"V40 AGA Mode","V43 CGX Mode",0},
- *cycle_res[]={"192*128","384*256","768*512","1536*1024","3072*2048","6144*4096",0},
- *cycle_dither[]={"No Dithering","Floyd-Steinberg",0};
-
- enum
- {
- ID_BT_Save=1,
- ID_BT_Use,
- };
-
- void InitGUI()
- {
- app=ApplicationObject,
- MUIA_Application_Title,"PCD Datatypes Preferences",
- MUIA_Application_Base,"PCD",
- MUIA_Application_Author,"Achim Stegemann",
- MUIA_Application_Copyright,"© 1998 by Achim Stegemann",
- MUIA_Application_Version,"$VER:PCDPrefs 43.13 (22.01.00)",
- MUIA_Application_Description,"MUI-Preferences 43.13 for PCD",
- MUIA_Application_UseRexx,0,
- MUIA_Application_SingleTask,1,
- SubWindow,window=WindowObject,
- MUIA_Window_Title,"PCD MUI-Preferences",
- MUIA_Window_ID,'PCD',
- WindowContents,VGroup,
- Child,ColGroup(2),
- GroupFrame,
- MUIA_Background,MUII_GroupBack,
- Child,Label1("Mode"),
- Child,CY_Mode=CycleObject,
- MUIA_CycleChain,1,
- MUIA_Cycle_Active,1,
- MUIA_Cycle_Entries,cycle_mode,
- End,
- Child,Label1("Resolution"),
- Child,CY_Res=CycleObject,
- MUIA_CycleChain,1,
- MUIA_Cycle_Active,2,
- MUIA_Cycle_Entries,cycle_res,
- End,
- Child,Label1("V40 Dithermode"),
- Child,CY_Dither=CycleObject,
- MUIA_CycleChain,1,
- MUIA_Cycle_Entries,cycle_dither,
- End,
- Child,Label1("V40 Depth"),
- Child,SLI_Depth=SliderObject,
- MUIA_CycleChain,1,
- MUIA_Numeric_Min,3,
- MUIA_Numeric_Max,8,
- MUIA_Numeric_Value,8,
- End,
- End,
- Child,HGroup,
- Child,BT_Save=TextObject,
- ButtonFrame,
- MUIA_Background,MUII_ButtonBack,
- MUIA_CycleChain,1,
- MUIA_ControlChar,'s',
- MUIA_InputMode,MUIV_InputMode_RelVerify,
- MUIA_Text_PreParse,MUIX_C,
- MUIA_Text_HiCharIdx,'_',
- MUIA_Text_Contents,"_Save",
- End,
- Child,BT_Use=TextObject,
- ButtonFrame,
- MUIA_Background,MUII_ButtonBack,
- MUIA_CycleChain,1,
- MUIA_ControlChar,'u',
- MUIA_InputMode,MUIV_InputMode_RelVerify,
- MUIA_Text_PreParse,MUIX_C,
- MUIA_Text_HiCharIdx,'_',
- MUIA_Text_Contents,"_Use",
- End,
- Child,BT_Quit=TextObject,
- ButtonFrame,
- MUIA_Background,MUII_ButtonBack,
- MUIA_CycleChain,1,
- MUIA_ControlChar,'c',
- MUIA_InputMode,MUIV_InputMode_RelVerify,
- MUIA_Text_PreParse,MUIX_C,
- MUIA_Text_HiCharIdx,'_',
- MUIA_Text_Contents,"_Cancel",
- End,
- End,
- End,
- End,
- End;
- if(!app) exit(20);
- NotifyAppClose(window);
- NotifyButton(BT_Save,ID_BT_Save);
- NotifyButton(BT_Use,ID_BT_Use);
- NotifyButton(BT_Quit,MUIV_Application_ReturnID_Quit);
- }
-
- void Ende()
- {
- if(app) MUI_DisposeObject(app);
- }
-
- void Save(BPTR file)
- {
- FPrintf(file,"%lu %lu %lu %lu\n",
- MyGetAttr(MUIA_Cycle_Active,CY_Mode),
- MyGetAttr(MUIA_Cycle_Active,CY_Res),
- MyGetAttr(MUIA_Cycle_Active,CY_Dither),
- MyGetAttr(MUIA_Numeric_Value,SLI_Depth));
- Flush(file);
- }
-
- void SaveENV()
- {
- BPTR file;
- if(file=Open("ENV:DataTypes/pcd.prefs",MODE_NEWFILE))
- {
- Save(file);
- Close(file);
- }
- }
-
- void SaveENVARC()
- {
- BPTR file;
- if(file=Open("ENVARC:DataTypes/pcd.prefs",MODE_NEWFILE))
- {
- Save(file);
- Close(file);
- }
- }
-
- void LoadENV()
- {
- char *var;
- if(var=(char *)AllocVec(256,0))
- {
- if(GetVar("ENV:DataTypes/pcd.prefs",var,256,LV_VAR|GVF_GLOBAL_ONLY)>=0)
- {
- RDArgs *rdargs;
- if(rdargs=(RDArgs *)AllocDosObject(DOS_RDARGS,0))
- {
- RDArgs *args;
- Arg para={0,0,0,0};
- rdargs->RDA_Source.CS_Buffer=var;
- rdargs->RDA_Source.CS_Length=strlen(var);
- rdargs->RDA_Source.CS_CurChr=0;
- if(args=ReadArgs("MODE/A/N,RESOLUTION/A/N,DITHER/A/N,DEPTH/A/N",(long *)¶,rdargs))
- {
- long v;
- if(para.mode)
- {
- v=*para.mode;
- if(v<0) v=0;
- else if(v>1) v=1;
- }
- else v=1;
- SetAttrs(CY_Mode,MUIA_Cycle_Active,v,TAG_END);
- if(para.res)
- {
- v=*para.res;
- if(v<0) v=0;
- else if(v>5) v=5;
- }
- else v=2;
- SetAttrs(CY_Res,MUIA_Cycle_Active,v,TAG_END);
- if(para.dither)
- {
- v=*para.dither;
- if(v<0) v=0;
- else if(v>1) v=1;
- }
- else v=0;
- SetAttrs(CY_Dither,MUIA_Cycle_Active,v,TAG_END);
- if(para.depth)
- {
- v=*para.depth;
- if(v<3) v=3;
- else if(v>8) v=8;
- }
- else v=8;
- SetAttrs(SLI_Depth,MUIA_Numeric_Value,v,TAG_END);
- FreeArgs(args);
- }
- FreeDosObject(DOS_RDARGS,rdargs);
- }
- }
- FreeVec(var);
- }
- }
-
- void main()
- {
- UWORD ende=0;
- atexit(Ende);
- InitGUI();
- LoadENV();
- SetAttrs(window,MUIA_Window_Open,1,TAG_END);
- while(!ende)
- {
- ULONG signals;
- switch(DoMethod(app,MUIM_Application_NewInput,&signals))
- {
- case MUIV_Application_ReturnID_Quit:
- ende=1;
- break;
- case ID_BT_Save:
- SaveENVARC();
- case ID_BT_Use:
- SaveENV();
- ende=1;
- }
- if(signals) signals=Wait(signals);
- }
- }
-
- extern "C" void wbmain()
- {
- main();
- }
-
-