/* vim: set sw=3 ts=3 sts=3 expandtab: */ #ifndef ECDB_COMMON_H #define ECDB_COMMON_H #undef FREE #define FREE(dat) \ { \ if (dat) { free(dat); dat = NULL; } \ } #undef __UNUSED__ #define __UNUSED__ __attribute__ ((unused)) #define IN 1 #define OUT 2 /* Typdefs */ typedef struct burn_source BurnSource; typedef struct burn_disc BurnDisc; typedef struct burn_session BurnSession; typedef struct burn_write_opts BurnWriteOpts; typedef struct burn_track BurnTrack; typedef struct burn_progress BurnProgress; typedef struct burn_drive_info BurnDriveInfo; typedef enum burn_drive_status BurnDriveStatus; typedef enum _Ecdb_Project_Type Ecdb_Project_Type; enum _Ecdb_Project_Type { ECDB_BURN_PROJECT, ECDB_AUDIO_PROJECT, ECDB_ERASE_PROJECT, ECDB_COPY_PROJECT, ECDB_IMAGE_PROJECT }; typedef enum _Ecdb_Burn_Result Ecdb_Burn_Result; enum _Ecdb_Burn_Result { ECDB_ERROR_IMAGE_CREATE, ECDB_ERROR_SOURCE_ATTACH, ECDB_ERROR_WRITE_MODE, ECDB_ERROR_NONE }; typedef struct _Ecdb_Drive_Info Ecdb_Drive_Info; struct _Ecdb_Drive_Info { /* Speeds */ int *read_speeds; int *write_speeds; /* Profiles */ const char *profile_name; int profile_loaded; /* Drive info */ const char *vendor; const char *product; const char *revision; char *location; unsigned char read_dvdram:1; unsigned char read_dvdr:1; unsigned char read_dvdrom:1; unsigned char read_cdr:1; unsigned char read_cdrw:1; unsigned char write_dvdram:1; unsigned char write_dvdr:1; unsigned char write_cdr:1; unsigned char write_simulate:1; /* Capacity */ long long capacity; BurnDriveInfo *tangible; }; typedef struct _Ecdb_Project_Info Ecdb_Project; struct _Ecdb_Project_Info { /* The drive reference */ Ecdb_Drive_Info *drive; Ecore_Event_Handler *ev_handler; Ecore_Pipe *pipe; unsigned int type; }; /* Typecast a pointer to an Ecdb_Source */ #define ECDB_SOURCE(src) ((Ecdb_Source *) src) typedef struct _Ecdb_Source Ecdb_Source; struct _Ecdb_Source { const char *dst; unsigned char dir:1; unsigned int num_children; long long size; //Sizeof itself and children Ecdb_Source **children; Ecdb_Source *parent; IsoNode *node; }; /* Typecast a pointer to an Ecdb_Project */ #define ECDB_PROJECT(proj) ((Ecdb_Project *) proj) typedef struct _Ecdb_Burn_Project Ecdb_Burn_Project; struct _Ecdb_Burn_Project { /* Inherit from normal project */ Ecdb_Project proj; /* Files are important here */ Ecdb_Source *files; Evas_Object *capacity; Evas_Object *speed_combo; Evas_Object *drive_combo; Evas_Object *parent; /* Ids */ char *volume_id; char *publisher_id; char *data_preparer_id; char *system_id; char *application_id; char *copywrite_id; char *abstract_id; char *biblio_id; /* iso options */ int iso_level; unsigned char use_joliet:1; unsigned char use_rockridge:1; unsigned char follow_symlinks:1; unsigned char ignore_hidden:1; unsigned char ignore_special:1; unsigned char iso1990:1; /* burn options */ unsigned char opc:1; unsigned char multi:1; unsigned char simulate:1; unsigned char underrun_proof:1; int speed; /* burn stuff */ int fifo_chunksize; int fifo_chunks; int burn_mode; }; /* Typecast a pointer to an Ecdb_Burn_Project */ #define ECDB_BURN(proj) ((Ecdb_Burn_Project *) proj) typedef struct _Ecdb_Audio_Project Ecdb_Audio_Project; struct _Ecdb_Audio_Project { /* Inherit from normal project */ Ecdb_Project proj; /* Audio tracks */ Ecdb_Source *tracks; int num_tracks; int num_transcode_complete; }; /* Typecast a pointer to an Ecdb_Audio_Project */ #define ECDB_AUDIO(proj) ((Ecdb_Audio_Project *) proj) typedef struct _Ecdb_Erase_Project Ecdb_Erase_Project; struct _Ecdb_Erase_Project { /* Inherit from normal project */ Ecdb_Project proj; /* Speed */ unsigned char quick:1; unsigned char format:1; }; /* Typecast a pointer to an Ecdb_Erase_Project */ #define ECDB_ERASE(proj) ((Ecdb_Erase_Project *) proj) #endif