home *** CD-ROM | disk | FTP | other *** search
- #include <clib/alib_protos.h>
- #include <pragma/dos_lib.h>
- #include <pragma/exec_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 *dct,*scale,*quality,*smooth,gray,prog;
- };
-
- APTR
- app,window,
- CY_DCT,CY_Scale,
- SLI_Quality,SLI_Smooth,CH_Gray,CH_Prog,
- BT_Save,BT_Use,BT_Quit;
-
- char
- *cycle_dct[]={"Slow Integer","Fast Integer","Floating Point",0},
- *cycle_scale[]={"1:1","1:2","1:4","1:8",0};
-
- enum
- {
- ID_BT_Save=1,
- ID_BT_Use
- };
-
- void InitGUI()
- {
- app=ApplicationObject,
- MUIA_Application_Title,"JPEG Datatypes Preferences",
- MUIA_Application_Base,"JPEG",
- MUIA_Application_Author,"Achim Stegemann",
- MUIA_Application_Copyright,"© 1999 by Achim Stegemann",
- MUIA_Application_Version,"$VER:JPEGPrefs 46.1 (22.01.00)",
- MUIA_Application_Description,"MUI-Preferences 46.1 for JPEG",
- MUIA_Application_UseRexx,0,
- MUIA_Application_SingleTask,1,
- SubWindow,window=WindowObject,
- MUIA_Window_Title,"JPEG MUI-Preferences",
- MUIA_Window_ID,'JPEG',
- WindowContents,VGroup,
- Child,ColGroup(2),
- GroupFrame,
- MUIA_Background,MUII_GroupBack,
- Child,Label1("DCT Methods"),
- Child,CY_DCT=CycleObject,
- MUIA_CycleChain,1,
- MUIA_Cycle_Active,0,
- MUIA_Cycle_Entries,cycle_dct,
- End,
- Child,Label1("Scale"),
- Child,CY_Scale=CycleObject,
- MUIA_CycleChain,1,
- MUIA_Cycle_Active,0,
- MUIA_Cycle_Entries,cycle_scale,
- End,
- Child,Label1("Quality"),
- Child,SLI_Quality=SliderObject,
- MUIA_CycleChain,1,
- MUIA_Numeric_Min,0,
- MUIA_Numeric_Max,100,
- MUIA_Numeric_Value,75,
- End,
- Child,Label1("Smoothing"),
- Child,SLI_Smooth=SliderObject,
- MUIA_CycleChain,1,
- MUIA_Numeric_Min,0,
- MUIA_Numeric_Max,100,
- MUIA_Numeric_Value,0,
- End,
- Child,Label1("Gray Mode"),
- Child,CH_Gray=ImageObject,
- ImageButtonFrame,
- MUIA_InputMode,MUIV_InputMode_Toggle,
- MUIA_Image_Spec,MUII_CheckMark,
- MUIA_Image_FreeVert,1,
- MUIA_Selected,0,
- MUIA_Background,MUII_ButtonBack,
- MUIA_CycleChain,1,
- End,
- Child,Label1("Progressive Mode"),
- Child,CH_Prog=ImageObject,
- ImageButtonFrame,
- MUIA_InputMode,MUIV_InputMode_Toggle,
- MUIA_Image_Spec,MUII_CheckMark,
- MUIA_Image_FreeVert,1,
- MUIA_Selected,0,
- MUIA_Background,MUII_ButtonBack,
- MUIA_CycleChain,1,
- 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 %s %s\n",
- MyGetAttr(MUIA_Cycle_Active,CY_DCT),
- MyGetAttr(MUIA_Cycle_Active,CY_Scale),
- MyGetAttr(MUIA_Numeric_Value,SLI_Quality),
- MyGetAttr(MUIA_Numeric_Value,SLI_Smooth),
- MyGetAttr(MUIA_Selected,CH_Gray)?"GRAY":"",
- MyGetAttr(MUIA_Selected,CH_Prog)?"PROGRESSIVE":"");
- }
-
- void SaveENV()
- {
- BPTR file;
- if(file=Open("ENV:DataTypes/jpeg.prefs",MODE_NEWFILE))
- {
- Save(file);
- Close(file);
- }
- }
-
- void SaveENVARC()
- {
- BPTR file;
- if(file=Open("ENVARC:DataTypes/jpeg.prefs",MODE_NEWFILE))
- {
- Save(file);
- Close(file);
- }
- }
-
- void LoadENV()
- {
- char *var;
- if(var=(char *)AllocVec(512,0))
- {
- if(GetVar("ENV:DataTypes/jpeg.prefs",var,512,LV_VAR|GVF_GLOBAL_ONLY)>=0)
- {
- RDArgs *rdargs;
- if(rdargs=(RDArgs *)AllocDosObject(DOS_RDARGS,0))
- {
- RDArgs *args;
- Arg para;
- rdargs->RDA_Source.CS_Buffer=var;
- rdargs->RDA_Source.CS_Length=strlen(var);
- rdargs->RDA_Source.CS_CurChr=0;
- memset(¶,0,sizeof(Arg));
- if(args=ReadArgs("DCT/A/N,SCALE/A/N,QUALITY/A/N,SMOOTH/A/N,GRAY/S,PROGRESSIVE/S",(long *)¶,rdargs))
- {
- long v;
- v=*para.dct;
- if(v<0) v=0;
- else if(v>2) v=2;
- SetAttrs(CY_DCT,MUIA_Cycle_Active,v,TAG_END);
- v=*para.scale;
- if(v<0) v=0;
- else if(v>3) v=3;
- SetAttrs(CY_Scale,MUIA_Cycle_Active,v,TAG_END);
- v=*para.quality;
- if(v<1) v=1;
- else if(v>100) v=100;
- SetAttrs(SLI_Quality,MUIA_Numeric_Value,v,TAG_END);
- v=*para.smooth;
- if(v<0) v=0;
- else if(v>100) v=100;
- SetAttrs(SLI_Smooth,MUIA_Numeric_Value,v,TAG_END);
- SetAttrs(CH_Gray,MUIA_Selected,para.gray,TAG_END);
- SetAttrs(CH_Prog,MUIA_Selected,para.prog,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();
- }
-