34 #define DICOMSDL_UIDPREFIX "1.2.826.0.1.3680043.8.417.1"
35 #define DICOMSDL_IMPLCLASSUID DICOMSDL_UIDPREFIX".1"
36 #define DICOMSDL_IMPLVERNAME "DICOMSDL 2010SEP"
37 #define DICOMSDL_FILESETID "DICOMDIR"
42 #define make_tag(gggg,eeee) (((gggg)<< 16) + (eeee))
43 #define group_in_tag(tag) ((uint16)((tag) >> 16))
44 #define element_in_tag(tag) ((uint16)((tag) & 0xffff))
45 #define make_even(x) ((x)+((x)&1))
450 int save_a(
char **val_a,
int *len_a,
opttype opt=default_save_opt);
463 {
return *get_dataelement(tag); };
465 {
return *get_dataelement(tagstr); };
470 uint32 len=0,
void *ptr=NULL,
471 int endian=MACHINE_ENDIANNESS,
int own_memory=
false);
475 void remove_dataelement(
tagtype tag);
476 void remove_all_dataelements();
480 void dump_string_a(
char **val_a,
int *len_a, std::string prefix=
"");
481 std::string dump_string(std::string prefix=
"");
485 int *width,
int *height,
486 int *precision,
int *signedness,
487 int *ncomponents,
int *bytes_per_pixel,
489 void set_image_dimension(
490 int width,
int height,
491 int precision,
int signedness,
int ncomponents);
493 void get_pixeldata_a(
char **val_a,
int *len_a);
494 int copy_pixeldata_to(
char *buf,
int rowstep,
int framestep,
int idx=-1);
497 {
return copy_pixeldata_to((
char *)buf, rowstep, framestep, idx); }
499 int set_pixeldata(
uidtype tsuid,
char *buf,
500 int width,
int height,
int prec,
int sgnd,
int ncomps,
int nframes,
501 int rowstep,
int framestep,
int quality=0);
505 int set_filemetainfo(
507 char* sop_instance_uid,
511 int change_pixelencoding(
uidtype transfer_syntax_uid,
int quality=0);
514 {
return edict.size(); };
517 void realloc_ptr(
long ptrdiff);
520 void _dump(std::iostream *os, std::string prefix);
537 (
const char *filename,
552 (
char *data,
int datasize,
567 int load_from_file(
const char *filename,
570 (
const char *data,
int datasize,
573 int save_to_file(
const char *filename,
opttype opt=default_save_opt);
575 (
char **val_a,
int *len_a,
opttype opt=default_save_opt);
579 void mark_dataset_offset(uint32 offset,
dataset *ds);
580 dataset* dataset_at(uint32 offset);
587 char* get_filename();
610 inline operator bool() {
return (vr !=
VR_NULL); };
614 int to_int(
int defaultvalue=0);
615 inline operator int () {
return to_int(); };
617 void to_int_values_a(
int **values,
int *nvalues);
618 std::vector<int> to_int_values();
619 operator std::vector<int> () {
return to_int_values(); };
623 double to_double(
double defaultvalue=0.0);
624 inline operator double() {
return to_double(); };
626 void to_double_values_a(
double **values,
int *nvalues);
627 std::vector <double> to_double_values();
628 operator std::vector <double> () {
return to_double_values(); };
632 void to_string_a(
char **val_a,
int *len_a=NULL);
633 std::string to_string(
const char* defaultvalue=
"");
634 inline operator std::string () {
return to_string(); };
638 void raw_value(
char **val,
int *len);
642 void repr_string_a(
char **val_a,
int *len_a,
int max_len=80);
643 std::string repr_string(
int max_len=80);
648 inline operator uidtype () {
return to_uid(); };
652 void from_int(
int value);
653 void from_int_values(
int *values,
int nvalues);
656 { from_int(value); };
658 { from_int_values(values, nvalues); };
659 void set_value(std::vector <int> & v);
662 { from_int(value);
return value; };
663 inline std::vector <int> &
operator=(std::vector <int> & v)
664 { set_value(v);
return v; };
668 void from_double(
double value);
669 void from_double_values(
double *values,
int nvalues);
672 { from_double(value); };
674 { from_double_values(values, nvalues); };
675 void set_value(std::vector <double> & v);
678 { from_double(v);
return v; };
679 inline std::vector <double> &
operator=(std::vector <double> & v)
680 { set_value(v);
return v; };
684 int number_of_datasets();
690 inline operator sequence* () {
return to_sequence(); };
692 int number_of_frames();
696 inline operator dataset* () {
return to_dataset(); };
700 void from_string(
const char *str);
702 { from_string((
char *)(s.c_str())); };
705 { from_string(str); };
707 { from_string((
char *)(s.c_str())); };
710 { from_string(v);
return v; };
712 { from_string((
char *)(s.c_str()));
return s; };
716 void from_data(
const char *data,
int datasize);
719 { from_data(data, datasize); };
723 void set_endian(
int endian=MACHINE_ENDIANNESS);
727 int alloc_memory(
int len);
740 element_dict_type::iterator
it;
751 std::vector <dataset *>
seq;
754 int size() {
return (
int) seq.size(); };
757 return (idx < size() ? seq[idx] : NULL);
760 {
return dataset_at(idx); };
764 void remove_dataset(
int idx,
bool delete_dataset=
true);
765 void remove_dataset(
dataset *ds,
bool delete_dataset=
true);
766 void remove_all_datasets(
bool delete_dataset=
true);
780 (
const char *filename,
opttype opt=default_load_opt);
782 (
char *data,
int datasize,
opttype opt=default_load_opt);
814 (
const char *filename,
opttype opt=default_load_opt);
816 (
const char *data,
int datasize,
opttype opt=default_load_opt);
818 void save_to_file(
const char *filename,
opttype opt=default_save_opt);
819 void save_to_memory_a
820 (
char **val_a,
int *len_a,
opttype opt=default_save_opt);
825 int add_dicomfile(
dicomfile *df,
char *ref_file_id);
826 int add_dicomfile(
const char *filename,
char *ref_file_id);
828 void build_dicomfile();
830 void _dump(
dirrec_t* r, std::string key=
"", std::string prefix=
"");
834 int add_dicomfile_image_type(
dicomfile *df,
char *ref_file_id);
836 void make_root_dirrec_own_dataset(
dirrec_t* r=NULL,
837 std::set<dataset *> *sds = (std::set<dataset *> *)NULL);
891 char **val_a,
int *len_a);
894 #define MAX_UID_LEN 64
896 DLLEXPORT std::string
gen_uid(
char* base_uid=NULL);
916 const char **study_desc_keys,
917 const char **ser_keys,
918 const char **ser_desc_keys,
919 const char **inst_keys);
940 #endif // __DICOM_H__
void set_value(const char *data, int datasize)
Definition: dicom.h:718
const vrtype VR_DT
Definition: dicom.h:54
const vrtype VR_CS
Definition: dicom.h:51
DLLEXPORT void zipfile_extract_file_a(const char *zipfn, const char *fn, char **val_a, int *len_a)
const char * get_next_instance()
DLLEXPORT uidtype uidvalue_to_uid(const char *uidvalue)
uint32 opttype
Definition: dicom.h:111
std::map< std::string, dirrec_t * > lowlevdir
Definition: dicom.h:794
void * ptr
Definition: dicom.h:601
sequence * to_sequence()
Definition: dicom.h:687
DLLEXPORT void test_func(char *s)
std::vector< double > & operator=(std::vector< double > &v)
Definition: dicom.h:679
const vrtype VR_PIXSEQ
Definition: dicom.h:82
vrtype vr
Definition: dicom.h:599
const vrtype VR_UN
Definition: dicom.h:72
DLLEXPORT const char * get_tag_keyword(tagtype tag)
void add(dicomfile *dfobj, const char *fn)
DLLEXPORT const char * get_tag_name(tagtype tag)
DLLEXPORT const char * uid_to_uidvalue(uidtype uid)
int is_valid()
Definition: dicom.h:609
void set_value(char *str)
Definition: dicom.h:704
std::string operator=(std::string &s)
Definition: dicom.h:711
const vrtype VR_LO
Definition: dicom.h:58
int operator=(int value)
Definition: dicom.h:661
dataset * ds
Definition: dicom.h:797
DLLEXPORT const char * get_vr_repr(vrtype vr)
const vrtype VR_UK
Definition: dicom.h:78
DLLEXPORT std::string zipfile_get_list(const char *filename)
void set_value(int *values, int nvalues)
Definition: dicom.h:657
size_t number_of_studies()
const opttype OPT_SAVE_IMPLICIT_DATASET_LENGTH
Definition: dicom.h:180
commandtype
Definition: dicom.h:209
uidtype tsuid
Definition: dicom.h:440
void set_value(std::string &s)
Definition: dicom.h:706
const vrtype VR_UL
Definition: dicom.h:71
char * operator=(char *v)
Definition: dicom.h:709
const vrtype VR_US
Definition: dicom.h:73
std::map< tagtype, dataelement * > element_dict_type
Definition: dicom.h:435
void set_value(double value)
Definition: dicom.h:671
const opttype OPT_LOAD_PARTIAL_FILE
Definition: dicom.h:131
~dataelement()
Definition: dicom.h:729
DLLEXPORT int use_decoder(uidtype tsuid, const char *codec_name)
dataset * dataset_at(int idx)
Definition: dicom.h:756
DLLEXPORT void set_debug_logger(logfunc)
uint32 optarg
Definition: dicom.h:112
dicomfile_sorter(const char **study_keys, const char **study_desc_keys, const char **ser_keys, const char **ser_desc_keys, const char **inst_keys)
const vrtype VR_DA
Definition: dicom.h:52
const vrtype VR_OF
Definition: dicom.h:61
void * stream
Definition: dicom.h:563
DLLEXPORT int is_valid_uid(char *u)
DLLEXPORT void add_tags_for_dicomdir(char **drtype_taglist)
bool own_dataset
Definition: dicom.h:800
const opttype OPT_SAVE_WITHOUT_METAINFO
Definition: dicom.h:178
int own_memory
Definition: dicom.h:603
DLLEXPORT void set_display_warning_message(int b)
void(* logfunc)(char *msg)
Definition: dicom.h:863
const vrtype VR_OB
Definition: dicom.h:60
void set_dirrec_type(const char *s)
size_t number_of_series_in_curr_study()
DLLEXPORT dicomfile * open_dicomfile_from_memory(char *data, int datasize, opttype opt=default_load_opt, optarg arg=0)
const vrtype VR_SL
Definition: dicom.h:65
char dirrec_type[20]
Definition: dicom.h:791
uidtype
Definition: dicom.h:251
uint8 * get_ptr()
Definition: dicom.h:605
DLLEXPORT void close_dicomdir(dicomdir *df)
const vrtype VR_UI
Definition: dicom.h:70
const vrtype VR_AT
Definition: dicom.h:50
~dataset()
Definition: dicom.h:478
DLLEXPORT dicomfile * open_dicomfile(const char *filename, opttype opt=default_load_opt, optarg arg=0)
const opttype OPT_SAVE_BASIC_OFFSET_TABLE
Definition: dicom.h:182
void set_value(double *values, int nvalues)
Definition: dicom.h:673
const vrtype VR_OW
Definition: dicom.h:62
DLLEXPORT tagtype find_tag(const char *keyword)
const char * get_next_series()
const vrtype VR_FD
Definition: dicom.h:55
void from_string(std::string &s)
Definition: dicom.h:701
DLLEXPORT void set_uid_prefix(char *u=NULL)
const vrtype VR_FL
Definition: dicom.h:56
dicomfile * df
Definition: dicom.h:810
dataset * ds
Definition: dicom.h:739
DLLEXPORT char * get_error_message()
const vrtype VR_LT
Definition: dicom.h:59
dicomfile()
Definition: dicom.h:583
DLLEXPORT vrtype get_tag_vr(tagtype tag)
DLLEXPORT dicomdir * open_dicomdir_from_memory(char *data, int datasize, opttype opt=default_load_opt)
element_dict_type::iterator it
Definition: dicom.h:740
const opttype OPT_DEFAULT
Definition: dicom.h:114
int endian
Definition: dicom.h:602
const vrtype VR_SQ
Definition: dicom.h:66
uint32 tagtype
Definition: dicom.h:39
std::vector< dataset * > seq
Definition: dicom.h:751
const vrtype VR_SH
Definition: dicom.h:64
const vrtype VR_NULL
Definition: dicom.h:47
int number_of_elements()
Definition: dicom.h:513
std::vector< int > & operator=(std::vector< int > &v)
Definition: dicom.h:663
int copy_pixeldata_to(void *buf, int rowstep, int framestep, int idx=-1)
Definition: dicom.h:496
void set_value(int value)
Definition: dicom.h:655
const opttype OPT_SAVE_CALC_GROUPLENGTH
Definition: dicom.h:181
dirrec_t * root_dirrec
Definition: dicom.h:811
const vrtype VR_AE
Definition: dicom.h:48
const vrtype VR_UT
Definition: dicom.h:74
DLLEXPORT void close_dicomfile(dicomfile *df)
tagtype tag
Definition: dicom.h:598
DLLEXPORT void reset_tags_for_dicomdir()
uint32 len
Definition: dicom.h:600
const vrtype VR_AS
Definition: dicom.h:49
const vrtype VR_ST
Definition: dicom.h:68
DLLEXPORT dicomdir * open_dicomdir(const char *filename, opttype opt=default_load_opt)
uint16 vrtype
Definition: dicom.h:40
const vrtype VR_IS
Definition: dicom.h:57
const vrtype VR_SS
Definition: dicom.h:67
std::map< uint32, dataset * > dataset_pos_list
Definition: dicom.h:578
DLLEXPORT dataset * pick_dataelements(dicomfile *df, const char **keys)
const char * get_next_study()
DLLEXPORT dataelement * nullelement()
const vrtype VR_OFFSET
Definition: dicom.h:87
const opttype OPT_LOAD_CONTINUE_ON_ERROR
Definition: dicom.h:149
const vrtype VR_DS
Definition: dicom.h:53
errtype
Definition: dicom.h:89
const opttype OPT_SAVE_IMPLICIT_SQ_LENGTH
Definition: dicom.h:179
DLLEXPORT void set_display_debug_message(int b)
const opttype OPT_LOAD_DONOT_COPY_DATA
Definition: dicom.h:175
element_dict_type edict
Definition: dicom.h:439
~sequence()
Definition: dicom.h:770
DLLEXPORT const char * uidvalue_to_uidname(const char *uidvalue)
DLLEXPORT void set_error_logger(logfunc)
const opttype OPT_SAVE_WITHOUT_PREAMBLE
Definition: dicom.h:177
DLLEXPORT std::string gen_uid(char *base_uid=NULL)
int size()
Definition: dicom.h:754
DLLEXPORT void set_warning_logger(logfunc)
const vrtype VR_TM
Definition: dicom.h:69
const vrtype VR_PN
Definition: dicom.h:63
double operator=(double v)
Definition: dicom.h:677
DLLEXPORT const char * uid_to_uidname(uidtype uid)
size_t number_of_images_in_curr_series()
DLLEXPORT int use_encoder(uidtype tsuid, const char *codec_name)