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