home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / utilities / jpeg-dt35 / source / jpegprefs.c < prev    next >
C/C++ Source or Header  |  2000-01-22  |  6KB  |  249 lines

  1. #include <clib/alib_protos.h>
  2. #include <pragma/dos_lib.h>
  3. #include <pragma/exec_lib.h>
  4. #include <pragma/intuition_lib.h>
  5. #include <pragma/muimaster_lib.h>
  6. #include <tools/tools.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9.  
  10. struct Arg
  11. {
  12. long *dct,*scale,*quality,*smooth,gray,prog;
  13. };
  14.  
  15. APTR
  16. app,window,
  17. CY_DCT,CY_Scale,
  18. SLI_Quality,SLI_Smooth,CH_Gray,CH_Prog,
  19. BT_Save,BT_Use,BT_Quit;
  20.  
  21. char
  22. *cycle_dct[]={"Slow Integer","Fast Integer","Floating Point",0},
  23. *cycle_scale[]={"1:1","1:2","1:4","1:8",0};
  24.  
  25. enum
  26. {
  27. ID_BT_Save=1,
  28. ID_BT_Use
  29. };
  30.  
  31. void InitGUI()
  32. {
  33. app=ApplicationObject,
  34.     MUIA_Application_Title,"JPEG Datatypes Preferences",
  35.     MUIA_Application_Base,"JPEG",
  36.     MUIA_Application_Author,"Achim Stegemann",
  37.     MUIA_Application_Copyright,"© 1999 by Achim Stegemann",
  38.     MUIA_Application_Version,"$VER:JPEGPrefs 46.1 (22.01.00)",
  39.     MUIA_Application_Description,"MUI-Preferences 46.1 for JPEG",
  40.     MUIA_Application_UseRexx,0,
  41.     MUIA_Application_SingleTask,1,
  42.     SubWindow,window=WindowObject,
  43.         MUIA_Window_Title,"JPEG MUI-Preferences",
  44.         MUIA_Window_ID,'JPEG',
  45.         WindowContents,VGroup,
  46.             Child,ColGroup(2),
  47.                 GroupFrame,
  48.                 MUIA_Background,MUII_GroupBack,
  49.                 Child,Label1("DCT Methods"),
  50.                 Child,CY_DCT=CycleObject,
  51.                     MUIA_CycleChain,1,
  52.                     MUIA_Cycle_Active,0,
  53.                     MUIA_Cycle_Entries,cycle_dct,
  54.                 End,
  55.                 Child,Label1("Scale"),
  56.                 Child,CY_Scale=CycleObject,
  57.                     MUIA_CycleChain,1,
  58.                     MUIA_Cycle_Active,0,
  59.                     MUIA_Cycle_Entries,cycle_scale,
  60.                 End,
  61.                 Child,Label1("Quality"),
  62.                 Child,SLI_Quality=SliderObject,
  63.                     MUIA_CycleChain,1,
  64.                     MUIA_Numeric_Min,0,
  65.                     MUIA_Numeric_Max,100,
  66.                     MUIA_Numeric_Value,75,
  67.                 End,
  68.                 Child,Label1("Smoothing"),
  69.                 Child,SLI_Smooth=SliderObject,
  70.                     MUIA_CycleChain,1,
  71.                     MUIA_Numeric_Min,0,
  72.                     MUIA_Numeric_Max,100,
  73.                     MUIA_Numeric_Value,0,
  74.                 End,
  75.                 Child,Label1("Gray Mode"),
  76.                 Child,CH_Gray=ImageObject,
  77.                     ImageButtonFrame,
  78.                     MUIA_InputMode,MUIV_InputMode_Toggle,
  79.                     MUIA_Image_Spec,MUII_CheckMark,
  80.                     MUIA_Image_FreeVert,1,
  81.                     MUIA_Selected,0,
  82.                     MUIA_Background,MUII_ButtonBack,
  83.                     MUIA_CycleChain,1,
  84.                 End,
  85.                 Child,Label1("Progressive Mode"),
  86.                 Child,CH_Prog=ImageObject,
  87.                     ImageButtonFrame,
  88.                     MUIA_InputMode,MUIV_InputMode_Toggle,
  89.                     MUIA_Image_Spec,MUII_CheckMark,
  90.                     MUIA_Image_FreeVert,1,
  91.                     MUIA_Selected,0,
  92.                     MUIA_Background,MUII_ButtonBack,
  93.                     MUIA_CycleChain,1,
  94.                 End,
  95.             End,
  96.             Child,HGroup,
  97.                 Child,BT_Save=TextObject,
  98.                     ButtonFrame,
  99.                     MUIA_Background,MUII_ButtonBack,
  100.                     MUIA_CycleChain,1,
  101.                     MUIA_ControlChar,'s',
  102.                     MUIA_InputMode,MUIV_InputMode_RelVerify,
  103.                     MUIA_Text_PreParse,MUIX_C,
  104.                     MUIA_Text_HiCharIdx,'_',
  105.                     MUIA_Text_Contents,"_Save",
  106.                 End,
  107.                 Child,BT_Use=TextObject,
  108.                     ButtonFrame,
  109.                     MUIA_Background,MUII_ButtonBack,
  110.                     MUIA_CycleChain,1,
  111.                     MUIA_ControlChar,'u',
  112.                     MUIA_InputMode,MUIV_InputMode_RelVerify,
  113.                     MUIA_Text_PreParse,MUIX_C,
  114.                     MUIA_Text_HiCharIdx,'_',
  115.                     MUIA_Text_Contents,"_Use",
  116.                 End,
  117.                 Child,BT_Quit=TextObject,
  118.                     ButtonFrame,
  119.                     MUIA_Background,MUII_ButtonBack,
  120.                     MUIA_CycleChain,1,
  121.                     MUIA_ControlChar,'c',
  122.                     MUIA_InputMode,MUIV_InputMode_RelVerify,
  123.                     MUIA_Text_PreParse,MUIX_C,
  124.                     MUIA_Text_HiCharIdx,'_',
  125.                     MUIA_Text_Contents,"_Cancel",
  126.                 End,
  127.             End,
  128.         End,
  129.     End,
  130. End;
  131. if(!app) exit(20);
  132. NotifyAppClose(window);
  133. NotifyButton(BT_Save,ID_BT_Save);
  134. NotifyButton(BT_Use,ID_BT_Use);
  135. NotifyButton(BT_Quit,MUIV_Application_ReturnID_Quit);
  136. }
  137.  
  138. void Ende()
  139. {
  140. if(app) MUI_DisposeObject(app);
  141. }
  142.  
  143. void Save(BPTR file)
  144. {
  145. FPrintf(file,"%lu %lu %lu %lu %s %s\n",
  146. MyGetAttr(MUIA_Cycle_Active,CY_DCT),
  147. MyGetAttr(MUIA_Cycle_Active,CY_Scale),
  148. MyGetAttr(MUIA_Numeric_Value,SLI_Quality),
  149. MyGetAttr(MUIA_Numeric_Value,SLI_Smooth),
  150. MyGetAttr(MUIA_Selected,CH_Gray)?"GRAY":"",
  151. MyGetAttr(MUIA_Selected,CH_Prog)?"PROGRESSIVE":"");
  152. }
  153.  
  154. void SaveENV()
  155. {
  156. BPTR file;
  157. if(file=Open("ENV:DataTypes/jpeg.prefs",MODE_NEWFILE))
  158.     {
  159.     Save(file);
  160.     Close(file);
  161.     }
  162. }
  163.  
  164. void SaveENVARC()
  165. {
  166. BPTR file;
  167. if(file=Open("ENVARC:DataTypes/jpeg.prefs",MODE_NEWFILE))
  168.     {
  169.     Save(file);
  170.     Close(file);
  171.     }
  172. }
  173.  
  174. void LoadENV()
  175. {
  176. char *var;
  177. if(var=(char *)AllocVec(512,0))
  178.     {
  179.     if(GetVar("ENV:DataTypes/jpeg.prefs",var,512,LV_VAR|GVF_GLOBAL_ONLY)>=0)
  180.         {
  181.         RDArgs *rdargs;
  182.       if(rdargs=(RDArgs *)AllocDosObject(DOS_RDARGS,0))
  183.             {
  184.             RDArgs *args;
  185.             Arg para;
  186.             rdargs->RDA_Source.CS_Buffer=var;
  187.             rdargs->RDA_Source.CS_Length=strlen(var);
  188.             rdargs->RDA_Source.CS_CurChr=0;
  189.             memset(¶,0,sizeof(Arg));
  190.             if(args=ReadArgs("DCT/A/N,SCALE/A/N,QUALITY/A/N,SMOOTH/A/N,GRAY/S,PROGRESSIVE/S",(long *)¶,rdargs))
  191.                 {
  192.                 long v;
  193.                 v=*para.dct;
  194.                 if(v<0) v=0;
  195.                 else if(v>2) v=2;
  196.                 SetAttrs(CY_DCT,MUIA_Cycle_Active,v,TAG_END);
  197.                 v=*para.scale;
  198.                 if(v<0) v=0;
  199.                 else if(v>3) v=3;
  200.                 SetAttrs(CY_Scale,MUIA_Cycle_Active,v,TAG_END);
  201.                 v=*para.quality;
  202.                 if(v<1) v=1;
  203.                 else if(v>100) v=100;
  204.                 SetAttrs(SLI_Quality,MUIA_Numeric_Value,v,TAG_END);
  205.                 v=*para.smooth;
  206.                 if(v<0) v=0;
  207.                 else if(v>100) v=100;
  208.                 SetAttrs(SLI_Smooth,MUIA_Numeric_Value,v,TAG_END);
  209.                 SetAttrs(CH_Gray,MUIA_Selected,para.gray,TAG_END);
  210.                 SetAttrs(CH_Prog,MUIA_Selected,para.prog,TAG_END);
  211.                 FreeArgs(args);
  212.                 }
  213.             FreeDosObject(DOS_RDARGS,rdargs);
  214.             }
  215.         }
  216.     FreeVec(var);
  217.     }
  218. }
  219.  
  220. void main()
  221. {
  222. UWORD ende=0;
  223. atexit(Ende);
  224. InitGUI();
  225. LoadENV();
  226. SetAttrs(window,MUIA_Window_Open,1,TAG_END);
  227. while(!ende)
  228.     {
  229.     ULONG signals;
  230.     switch(DoMethod(app,MUIM_Application_NewInput,&signals))
  231.         {
  232.         case MUIV_Application_ReturnID_Quit:
  233.             ende=1;
  234.             break;
  235.         case ID_BT_Save:
  236.             SaveENVARC();
  237.         case ID_BT_Use:
  238.             SaveENV();
  239.             ende=1;
  240.         }
  241.     if(signals) signals=Wait(signals);
  242.     }
  243. }
  244.  
  245. extern "C" void wbmain()
  246. {
  247. main();
  248. }
  249.