home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / utilities / rgfx-dt / source / rgfxprefs.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-22  |  5.1 KB  |  236 lines

  1. #include <clib/alib_protos.h>
  2. #include <pragma/dos_lib.h>
  3. #include <pragma/exec_lib.h>
  4. #include <pragma/icon_lib.h>
  5. #include <pragma/intuition_lib.h>
  6. #include <pragma/muimaster_lib.h>
  7. #include <mui/xpk_mcc.h>
  8. #include <tools/tools.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11.  
  12. struct Arg
  13. {
  14. long *mode,*dither,*depth;
  15. char *xpk;
  16. long *xpkmode;
  17. char *password;
  18. };
  19.  
  20. APTR
  21. app,window,
  22. CY_Mode,CY_Dither,SLI_Depth,XPK_Obj,
  23. BT_Save,BT_Use,BT_Quit;
  24.  
  25. char
  26. *cycle_mode[]={"V40 AGA Mode","V43 CGX Mode",0},
  27. *cycle_dither[]={"No Dithering","Floyd-Steinberg",0};
  28.  
  29. enum
  30. {
  31. ID_BT_Save=1,
  32. ID_BT_Use
  33. };
  34.  
  35. void InitGUI()
  36. {
  37. static char *reg[3]={
  38. "Graphics","Xpk",0};
  39.  
  40. app=ApplicationObject,
  41.     MUIA_Application_Title,"RGFX Datatypes Preferences",
  42.     MUIA_Application_Base,"RGFX",
  43.     MUIA_Application_Author,"Achim Stegemann",
  44.     MUIA_Application_Copyright,"© 1998-2000 by Achim Stegemann",
  45.     MUIA_Application_Version,"$VER:RGFXPrefs 43.13 (21.01.00)",
  46.     MUIA_Application_Description,"MUI-Preferences 43.13 for RGFX",
  47.     MUIA_Application_UseRexx,0,
  48.     MUIA_Application_SingleTask,1,
  49.     SubWindow,window=WindowObject,
  50.         MUIA_Window_Title,"RGFX MUI-Preferences",
  51.         MUIA_Window_ID,'RGFX',
  52.         WindowContents,VGroup,
  53.             Child,RegisterGroup(reg),
  54.                 Child,ColGroup(2),
  55.                     GroupFrame,
  56.                     MUIA_Background,MUII_GroupBack,
  57.                     Child,Label1("Gfx Mode"),
  58.                     Child,CY_Mode=CycleObject,
  59.                         MUIA_CycleChain,1,
  60.                         MUIA_Cycle_Active,1,
  61.                         MUIA_Cycle_Entries,cycle_mode,
  62.                     End,
  63.                     Child,Label1("V40 Dithermode"),
  64.                     Child,CY_Dither=CycleObject,
  65.                         MUIA_CycleChain,1,
  66.                         MUIA_Cycle_Entries,cycle_dither,
  67.                     End,
  68.                     Child,Label1("V40 CLUT Depth"),
  69.                     Child,SLI_Depth=SliderObject,
  70.                         MUIA_CycleChain,1,
  71.                         MUIA_Numeric_Min,3,
  72.                         MUIA_Numeric_Max,8,
  73.                         MUIA_Numeric_Value,8,
  74.                     End,
  75.                 End,
  76.                 Child,XPK_Obj=XpkObject,
  77.                     MUIA_Xpk_Method,"NUKE",
  78.                 End,
  79.             End,
  80.             Child,HGroup,
  81.                 Child,BT_Save=TextObject,
  82.                     ButtonFrame,
  83.                     MUIA_Background,MUII_ButtonBack,
  84.                     MUIA_CycleChain,1,
  85.                     MUIA_ControlChar,'s',
  86.                     MUIA_InputMode,MUIV_InputMode_RelVerify,
  87.                     MUIA_Text_PreParse,MUIX_C,
  88.                     MUIA_Text_HiCharIdx,'_',
  89.                     MUIA_Text_Contents,"_Save",
  90.                 End,
  91.                 Child,BT_Use=TextObject,
  92.                     ButtonFrame,
  93.                     MUIA_Background,MUII_ButtonBack,
  94.                     MUIA_CycleChain,1,
  95.                     MUIA_ControlChar,'u',
  96.                     MUIA_InputMode,MUIV_InputMode_RelVerify,
  97.                     MUIA_Text_PreParse,MUIX_C,
  98.                     MUIA_Text_HiCharIdx,'_',
  99.                     MUIA_Text_Contents,"_Use",
  100.                 End,
  101.                 Child,BT_Quit=TextObject,
  102.                     ButtonFrame,
  103.                     MUIA_Background,MUII_ButtonBack,
  104.                     MUIA_CycleChain,1,
  105.                     MUIA_ControlChar,'c',
  106.                     MUIA_InputMode,MUIV_InputMode_RelVerify,
  107.                     MUIA_Text_PreParse,MUIX_C,
  108.                     MUIA_Text_HiCharIdx,'_',
  109.                     MUIA_Text_Contents,"_Cancel",
  110.                 End,
  111.             End,
  112.         End,
  113.     End,
  114. End;
  115. if(!app) exit(20);
  116. NotifyAppClose(window);
  117. NotifyButton(BT_Save,ID_BT_Save);
  118. NotifyButton(BT_Use,ID_BT_Use);
  119. NotifyButton(BT_Quit,MUIV_Application_ReturnID_Quit);
  120. }
  121.  
  122. void Ende()
  123. {
  124. if(app) MUI_DisposeObject(app);
  125. }
  126.  
  127. void Save(BPTR file)
  128. {
  129. FPrintf(file,"%lu %lu %lu %s %lu %s\n",
  130. MyGetAttr(MUIA_Cycle_Active,CY_Mode),
  131. MyGetAttr(MUIA_Cycle_Active,CY_Dither),
  132. MyGetAttr(MUIA_Numeric_Value,SLI_Depth),
  133. MyGetAttr(MUIA_Xpk_Method,XPK_Obj),
  134. MyGetAttr(MUIA_Xpk_Mode,XPK_Obj),
  135. MyGetAttr(MUIA_Xpk_Password,XPK_Obj));
  136. }
  137.  
  138. void SaveENV()
  139. {
  140. BPTR file;
  141. if(file=Open("ENV:DataTypes/rgfx.prefs",MODE_NEWFILE))
  142.     {
  143.     Save(file);
  144.     Close(file);
  145.     }
  146. }
  147.  
  148. void SaveENVARC()
  149. {
  150. BPTR file;
  151. if(file=Open("ENVARC:DataTypes/rgfx.prefs",MODE_NEWFILE))
  152.     {
  153.     Save(file);
  154.     Close(file);
  155.     }
  156. }
  157.  
  158. void LoadENV()
  159. {
  160. char *var;
  161. if(var=(char *)AllocVec(256,0))
  162.     {
  163.     if(GetVar("ENV:DataTypes/rgfx.prefs",var,256,LV_VAR|GVF_GLOBAL_ONLY)>=0)
  164.         {
  165.         RDArgs *rdargs;
  166.       if(rdargs=(RDArgs *)AllocDosObject(DOS_RDARGS,0))
  167.             {
  168.             RDArgs *args;
  169.             Arg para;
  170.             rdargs->RDA_Source.CS_Buffer=var;
  171.             rdargs->RDA_Source.CS_Length=strlen(var);
  172.             rdargs->RDA_Source.CS_CurChr=0;
  173.             memset(¶,0,sizeof(Arg));
  174.             if(args=ReadArgs("MODE/A/N,DITHER/A/N,DEPTH/A/N,XPK/A,XPKMODE/A/N,PASSWORD",(long *)¶,rdargs))
  175.                 {
  176.                 long v;
  177.                 char xpk[5];
  178.                 v=*para.mode;
  179.                 if(v<0) v=0;
  180.                 else if(v>1) v=1;
  181.                 SetAttrs(CY_Mode,MUIA_Cycle_Active,v,TAG_END);
  182.                 v=*para.dither;
  183.                 if(v<0) v=0;
  184.                 else if(v>1) v=1;
  185.                 SetAttrs(CY_Dither,MUIA_Cycle_Active,v,TAG_END);
  186.                 v=*para.depth;
  187.                 if(v<3) v=3;
  188.                 else if(v>8) v=8;
  189.                 SetAttrs(SLI_Depth,MUIA_Numeric_Value,v,TAG_END);
  190.                 strncpy(xpk,para.xpk,4);
  191.                 xpk[4]=0;
  192.                 SetAttrs(XPK_Obj,MUIA_Xpk_Method,xpk,TAG_END);
  193.                 v=*para.xpkmode;
  194.                 if(v<0) v=0;
  195.                 else if(v>100) v=100;
  196.                 SetAttrs(XPK_Obj,MUIA_Xpk_Mode,v,TAG_END);
  197.                 if(para.password) SetAttrs(XPK_Obj,MUIA_Xpk_Password,para.password,TAG_END);
  198.                 FreeArgs(args);
  199.                 }
  200.             FreeDosObject(DOS_RDARGS,rdargs);
  201.             }
  202.         }
  203.     FreeVec(var);
  204.     }
  205. }
  206.  
  207. void main()
  208. {
  209. UWORD ende=0;
  210. atexit(Ende);
  211. InitGUI();
  212. LoadENV();
  213. SetAttrs(window,MUIA_Window_Open,1,TAG_END);
  214. while(!ende)
  215.     {
  216.     ULONG signals;
  217.     switch(DoMethod(app,MUIM_Application_NewInput,&signals))
  218.         {
  219.         case MUIV_Application_ReturnID_Quit:
  220.             ende=1;
  221.             break;
  222.         case ID_BT_Save:
  223.             SaveENVARC();
  224.         case ID_BT_Use:
  225.             SaveENV();
  226.             ende=1;
  227.         }
  228.     if(signals) signals=Wait(signals);
  229.     }
  230. }
  231.  
  232. extern "C" void wbmain()
  233. {
  234. main();
  235. }
  236.