示例#1
0
        public static string Generate(string vnamespace, string vclass, DicomDictionary dict)
        {
            StringBuilder output = new StringBuilder();

            output.AppendFormat("namespace {0} {{", vnamespace).AppendLine();
            output.AppendFormat("\tpublic partial class {0} {{", vclass).AppendLine();

            foreach (DicomDictionaryEntry entry in dict.OrderBy(entry => (uint)entry.Tag))
            {
                //if (entry.MaskTag != null)
                //	continue;

                string vrs      = String.Join("/", entry.ValueRepresentations.Select(x => x.ToString()));
                string variable = "_" + Char.ToLower(entry.Keyword[0]) + entry.Keyword.Substring(1);

                output.AppendFormat("\t\t///<summary>{0} VR={1} VM={2} {3}{4}</summary>",
                                    entry.Tag, vrs, entry.ValueMultiplicity, entry.Name, entry.IsRetired ? " (RETIRED)" : "").AppendLine();
                output.AppendFormat("\t\tpublic readonly static DicomTag {0}{1} = new DicomTag(0x{2:x4}, 0x{3:x4});",
                                    entry.Keyword, entry.IsRetired ? "RETIRED" : "", entry.Tag.Group, entry.Tag.Element).AppendLine();
                output.AppendLine();

                //output.AppendFormat("\t\t///<summary>{0} VR={1} VM={2} {3}{4}</summary>",
                //    entry.Tag, vrs, entry.ValueMultiplicity, entry.Name, entry.IsRetired ? " (RETIRED)" : "").AppendLine();
                //output.AppendFormat("\t\tpublic static DicomTag {0}{1} {{", entry.Keyword, entry.IsRetired ? "RETIRED" : "").AppendLine();
                //output.AppendLine("\t\t\tget {");
                //output.AppendFormat("\t\t\t\tif ({0} == null)", variable).AppendLine();
                //output.AppendFormat("\t\t\t\t\t{0} = new DicomTag(0x{1:x4}, 0x{2:x4});", variable, entry.Tag.Group, entry.Tag.Element).AppendLine();
                //output.AppendFormat("\t\t\t\treturn {0};", variable).AppendLine();
                //output.AppendLine("\t\t\t}");
                //output.AppendLine("\t\t}");
                //output.AppendFormat("\t\tprivate static DicomTag {0};", variable).AppendLine();
                //output.AppendLine();
            }

            output.AppendLine("\t}");
            output.AppendLine("}");

            return(output.ToString());
        }
示例#2
0
        public static string Generate(string vnamespace, string vclass, string vmethod, DicomDictionary dict)
        {
            StringBuilder output = new StringBuilder();

            output.AppendFormat("namespace {0} {{", vnamespace).AppendLine();
            output.AppendFormat("\tpublic partial class {0} {{", vclass).AppendLine();
            output.AppendFormat("\t\tpublic static void {0}(DicomDictionary dict) {{", vmethod).AppendLine();

            foreach (DicomDictionaryEntry entry in dict.OrderBy(entry => (uint)entry.Tag))
            {
                string vm = null;
                switch (entry.ValueMultiplicity.ToString())
                {
                case "1": vm = "DicomVM.VM_1"; break;

                case "1-2": vm = "DicomVM.VM_1_2"; break;

                case "1-3": vm = "DicomVM.VM_1_3"; break;

                case "1-8": vm = "DicomVM.VM_1_8"; break;

                case "1-32": vm = "DicomVM.VM_1_32"; break;

                case "1-99": vm = "DicomVM.VM_1_99"; break;

                case "1-n": vm = "DicomVM.VM_1_n"; break;

                case "2": vm = "DicomVM.VM_2"; break;

                case "2-n": vm = "DicomVM.VM_2_n"; break;

                case "2-2n": vm = "DicomVM.VM_2_2n"; break;

                case "3": vm = "DicomVM.VM_3"; break;

                case "3-n": vm = "DicomVM.VM_3_n"; break;

                case "3-3n": vm = "DicomVM.VM_3_3n"; break;

                case "4": vm = "DicomVM.VM_4"; break;

                case "6": vm = "DicomVM.VM_6"; break;

                case "16": vm = "DicomVM.VM_16"; break;

                default:
                    vm = String.Format("DicomVM.Parse(\"{0}\")", entry.ValueMultiplicity);
                    break;
                }

                if (entry.MaskTag == null || entry.MaskTag.Mask == 0xffffffff)
                {
                    output.AppendFormat("\t\t\tdict._entries.Add(DicomTag.{3}{6}, new DicomDictionaryEntry(DicomTag.{3}{6}, \"{2}\", \"{3}\", {4}, {5}",
                                        entry.Tag.ToString("g", null), entry.Tag.ToString("e", null), entry.Name, entry.Keyword, vm, entry.IsRetired ? "true" : "false", entry.IsRetired ? "RETIRED" : "");
                }
                else
                {
                    output.AppendFormat("\t\t\tdict.Add(new DicomDictionaryEntry(DicomMaskedTag.Parse(\"{0}\",\"{1}\"), \"{2}\", \"{3}\", {4}, {5}",
                                        entry.MaskTag.ToString("g", null), entry.MaskTag.ToString("e", null), entry.Name, entry.Keyword, vm, entry.IsRetired ? "true" : "false");
                }

                foreach (DicomVR vr in entry.ValueRepresentations)
                {
                    output.AppendFormat(", DicomVR.{0}", vr.Code);
                }

                output.AppendLine("));");
            }

            output.AppendLine("\t\t}");
            output.AppendLine("\t}");
            output.AppendLine("}");

            return(output.ToString());
        }