Exemple #1
0
        public void CompressTest(string file, Paradox.Graphics.PixelFormat format)
        {
            TexImage image = TestTools.Load(library, file);

            TexLibraryTest.CompressTest(image, library, format);

            image.Dispose();
        }
 public static bool Infers <T>(this T premise, T conclusion, Paradox <T> predicate = null)
 {
     if (null == predicate)
     {
         return(premise.Implies(conclusion, Infers));
     }
     if (Implies != predicate)
     {
         return(predicate(premise, conclusion));
     }
     return(Implications.CheckImplies(premise, conclusion));
 }
Exemple #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LoadingRequest"/> class to load a texture from a <see cref="SiliconStudio.Paradox.Graphics.Image"/> instance.
 /// </summary>
 /// <param name="image">The image.</param>
 /// <param name="loadAsSRgb">Indicate if the input file should be loaded as in sRGB file</param>
 public LoadingRequest(Paradox.Graphics.Image image, bool loadAsSRgb)
 {
     PdxImage = image;
     Mode = LoadingMode.PdxImage;
     LoadAsSRgb = loadAsSRgb;
 }
        /// <summary>
        /// Mixes shader parts to produces a single HLSL file shader.
        /// </summary>
        /// <param name="shaderMixinSource">The shader source.</param>
        /// <param name="macros">The shader perprocessor macros.</param>
        /// <param name="modifiedShaders">The list of modified shaders.</param>
        /// <returns>The combined shader in AST form.</returns>
        public ShaderMixinParsingResult Parse(ShaderMixinSource shaderMixinSource, Paradox.Shaders.ShaderMacro[] macros = null)
        {
            // Creates a parsing result
            HashSet<ModuleMixinInfo> mixinsToAnalyze;
            ShaderMixinParsingResult parsingResult;
            var context = ParseAndAnalyze(shaderMixinSource, macros, out parsingResult, out mixinsToAnalyze);

            // Return directly if there was any errors
            if (parsingResult.HasErrors)
                return parsingResult;

            // Update the clone context in case new instances of classes are created
            lock (hlslCloneContext)
            {
                HlslSemanticAnalysis.UpdateCloneContext(hlslCloneContext);
            }

            // only clone once the stage classes
            var mixCloneContext = new CloneContext(hlslCloneContext);
            foreach (var mixinInfo in mixinsToAnalyze)
            {
                foreach (var mixin in mixinInfo.Mixin.MinimalContext.Where(x => x.StageOnlyClass))
                {
                    mixin.DeepClone(mixCloneContext);
                }
            }

            // ----------------------------------------------------------
            // Perform Shader Mixer
            // ----------------------------------------------------------
            var externDict = new CompositionDictionary();
            var finalModuleList = BuildCompositionsDictionary(shaderMixinSource, externDict, context, mixCloneContext, parsingResult);
            //PerformanceLogger.Stop(PerformanceStage.DeepClone);

            if (parsingResult.HasErrors)
                return parsingResult;

            // look for stage compositions and add the links between variables and compositions when necessary
            var extraExternDict = new Dictionary<Variable, List<ModuleMixin>>();
            foreach (var item in externDict)
            {
                if (item.Key.Qualifiers.Contains(ParadoxStorageQualifier.Stage))
                    FullLinkStageCompositions(item.Key, item.Value, externDict, extraExternDict, parsingResult);
            }
            foreach (var item in extraExternDict)
                externDict.Add(item.Key, item.Value);

            var mixinDictionary = BuildMixinDictionary(finalModuleList);

            if (finalModuleList != null)
            {
                var finalModule = finalModuleList[0];
                //PerformanceLogger.Start(PerformanceStage.Mix);
                var mixer = new ParadoxShaderMixer(finalModule, parsingResult, mixinDictionary, externDict, new CloneContext(mixCloneContext));
                mixer.Mix();
                //PerformanceLogger.Stop(PerformanceStage.Mix);

                // Return directly if there was any errors
                if (parsingResult.HasErrors)
                    return parsingResult;

                var finalShader = mixer.GetMixedShader();

                // Simplifies the shader by removing dead code
                var simplifier = new ExpressionSimplifierVisitor();
                simplifier.Run(finalShader);

                parsingResult.Reflection = new EffectReflection();
                var pdxShaderLinker = new ShaderLinker(parsingResult);
                pdxShaderLinker.Run(finalShader);

                // Return directly if there was any errors
                if (parsingResult.HasErrors)
                    return parsingResult;

                // Find all entry points
                // TODO: make this configurable by CompileParameters
                foreach (var stage in new[] {ShaderStage.Compute, ShaderStage.Vertex, ShaderStage.Hull, ShaderStage.Domain, ShaderStage.Geometry, ShaderStage.Pixel})
                {
                    var entryPoint = finalShader.Declarations.OfType<MethodDefinition>().FirstOrDefault(f => f.Attributes.OfType<AttributeDeclaration>().Any(a => a.Name == "EntryPoint" && (string)a.Parameters[0].Value == stage.ToString()));

                    if (entryPoint == null)
                    {
                        continue;
                    }

                    parsingResult.EntryPoints[stage] = entryPoint.Name.Text;
                    
                    // When this is a compute shader, there is no need to scan other stages
                    if (stage == ShaderStage.Compute)
                        break;
                }

                var typeCleaner = new ParadoxShaderCleaner();
                typeCleaner.Run(finalShader);

                //PerformanceLogger.Stop(PerformanceStage.Global);

                //PerformanceLogger.PrintLastResult();
                //SemanticPerformance.PrintResult();
                //MixPerformance.PrintResult();
                //GenerateShaderPerformance.PrintResult();
                //StreamCreatorPerformance.PrintResult();
                //ShaderLoader.PrintTime();

                //PerformanceLogger.WriteOut(52);

                parsingResult.Shader = finalShader;
            }

            return parsingResult;
        }
        internal ShaderCompilationContext ParseAndAnalyze(ShaderMixinSource shaderMixinSource, Paradox.Shaders.ShaderMacro[] macros, out ShaderMixinParsingResult parsingResult, out HashSet<ModuleMixinInfo> mixinsToAnalyze)
        {
            // Creates a parsing result
            parsingResult = new ShaderMixinParsingResult();

            SiliconStudio.Shaders.Parser.ShaderMacro[] macrosParser;
            if (macros == null)
            {
                macrosParser = new SiliconStudio.Shaders.Parser.ShaderMacro[0];
            }
            else
            {
                macrosParser = new SiliconStudio.Shaders.Parser.ShaderMacro[macros.Length];
                for (var i = 0; i < macros.Length; ++i)
                    macrosParser[i] = new SiliconStudio.Shaders.Parser.ShaderMacro(macros[i].Name, macros[i].Definition);
            }
            //PerformanceLogger.Start(PerformanceStage.Global);

            // ----------------------------------------------------------
            // Load all shaders
            // ----------------------------------------------------------
            lock (shaderLibrary)
            {
                //PerformanceLogger.Start(PerformanceStage.Loading);
                mixinsToAnalyze = shaderLibrary.LoadShaderSource(shaderMixinSource, macrosParser);
                //PerformanceLogger.Stop(PerformanceStage.Loading);
            }

            // Extract all ModuleMixinInfo and check for any errors
            var allMixinInfos = new HashSet<ModuleMixinInfo>();
            foreach (var moduleMixinInfo in mixinsToAnalyze)
            {
                allMixinInfos.UnionWith(moduleMixinInfo.MinimalContext);
            }
            foreach (var moduleMixinInfo in allMixinInfos)
            {
                moduleMixinInfo.Log.CopyTo(parsingResult);

                var ast = moduleMixinInfo.MixinAst;
                var shaderClassSource = moduleMixinInfo.ShaderSource as ShaderClassSource;
                // If we have a ShaderClassSource and it is not an inline one, then we can store the hash sources
                if (ast != null && shaderClassSource != null)
                {
                    parsingResult.HashSources[shaderClassSource.ClassName] = ast.SourceHash;
                }
            }

            // Return directly if there was any errors
            if (parsingResult.HasErrors)
                return null;

            // ----------------------------------------------------------
            // Perform Type Analysis
            // ----------------------------------------------------------
            //PerformanceLogger.Start(PerformanceStage.TypeAnalysis);
            var context = GetCompilationContext(mixinsToAnalyze, parsingResult);
            //PerformanceLogger.Stop(PerformanceStage.TypeAnalysis);

            // Return directly if there was any errors
            if (parsingResult.HasErrors)
                return context;

            lock (SemanticAnalyzerLock)
            {
                //PerformanceLogger.Start(PerformanceStage.SemanticAnalysis);
                //SemanticPerformance.Start(SemanticStage.Global);
                foreach (var mixin in mixinsToAnalyze)
                    context.Analyze(mixin);
                //SemanticPerformance.Pause(SemanticStage.Global);
                //PerformanceLogger.Stop(PerformanceStage.SemanticAnalysis);
            }

            return context;
        }
        public void ProcessingTest(string source, string extension, Filter.Rescaling rescaleFiler, Paradox.Graphics.PixelFormat format)
        {
            var image = texTool.Load(TestTools.InputTestFolder + source);

            texTool.CorrectGamma(image, 2.2);

            texTool.Rescale(image, 0.5f, 0.5f, rescaleFiler);

            texTool.GenerateMipMaps(image, Filter.MipMapGeneration.Box);

            var normalMap = texTool.GenerateNormalMap(image, 4);

            texTool.CorrectGamma(normalMap, 1/2.2);

            string output = "TextureTool_ProcessingTest_NormalMap" + rescaleFiler + "_" + format + "_" + source + extension;
            texTool.Save(normalMap, TestTools.TempFolder + output, format, normalMap.Width / 2);
            normalMap.Dispose();

            Assert.IsTrue(TestTools.ComputeSHA1(TestTools.TempFolder + output).Equals(TestTools.GetInstance().Checksum[output]));
            //Console.WriteLine(output + "." + TestTools.ComputeSHA1(TestTools.TempFolder + output));
            File.Delete(TestTools.TempFolder + output);

            texTool.Flip(image, Orientation.Horizontal);

            texTool.CorrectGamma(image, 1/2.2);

            output = "TextureTool_ProcessingTest_" + rescaleFiler + "_" + format + "_" + source + extension;
            texTool.Save(image, TestTools.TempFolder + output, format, 4);
            image.Dispose();

            Assert.IsTrue(TestTools.ComputeSHA1(TestTools.TempFolder + output).Equals(TestTools.GetInstance().Checksum[output]));
            //Console.WriteLine(output + "." + TestTools.ComputeSHA1(TestTools.TempFolder + output));
            File.Delete(TestTools.TempFolder + output);

            image.Dispose();
        }
        public void SaveTest(string input, string extension, Paradox.Graphics.PixelFormat compressionFormat, int minimumMipmapSize)
        {
            TexImage image = texTool.Load(TestTools.InputTestFolder + input);

            string output = Path.GetFileNameWithoutExtension(input) + extension;

            if (compressionFormat == Paradox.Graphics.PixelFormat.None)
            {
                texTool.Save(image, TestTools.TempFolder + output, minimumMipmapSize);
            }
            else
            {
                texTool.Save(image, TestTools.TempFolder + output, compressionFormat, minimumMipmapSize);
            }

            Assert.IsTrue(File.Exists(TestTools.TempFolder + output));
            var loaded = texTool.Load(TestTools.TempFolder + output);

            Assert.IsTrue(TestTools.ComputeSHA1(loaded.Data, loaded.DataSize).Equals(TestTools.GetInstance().Checksum["TextureTool_Save_" + compressionFormat + "_" + minimumMipmapSize + "_" + loaded.Name]));
            //Console.WriteLine("TextureTool_Save_" + compressionFormat + "_" + minimumMipmapSize + "_" + loaded.Name + "." + TestTools.ComputeSHA1(loaded.Data, loaded.DataSize));

            File.Delete(TestTools.TempFolder + output);

            loaded.Dispose();
            image.Dispose();
        }
        public void CompressTest(string filename, Paradox.Graphics.PixelFormat format)
        {
            TexImage image = texTool.Load(TestTools.InputTestFolder + filename);
            texTool.Compress(image, format);
            Assert.IsTrue(image.Format == format);

            Assert.IsTrue(TestTools.ComputeSHA1(image.Data, image.DataSize).Equals(TestTools.GetInstance().Checksum["TextureTool_Compress_" + format + "_" + image.Name]));
            //Console.WriteLine("TextureTool_Compress_" + format + "_" + image.Name + "." + TestTools.ComputeSHA1(image.Data, image.DataSize));

            image.Dispose();
        }
        private void btnTx_Click(object sender, EventArgs e)
        {
            //连接本地数据库,获取BC5300数据:修改base类

            if (txtDjh.Text.Trim() == "")
            {
                MessageBox.Show("体检登记号不能为空!", "警告");
                return;
            }
            if (txtTjbh.Text.Trim() == "")
            {
                MessageBox.Show("体检编号不能为空!", "警告");
                return;
            }

            //全角半角转换
            string djh = txtDjh.Text.Trim();

            djh = comn.CharConverter(djh);
            string tjbh = txtTjbh.Text.Trim();

            tjbh = comn.CharConverter(tjbh);
            DataTable dtnew = null;

            if (cmbJyyq.SelectedValue.ToString() == "0002")
            {
                #region BC5300
                //容错处理:1.登记号和体检号互换 2.姓名判断
                dtnew = jyjkBiz.GetJyjg(djh, tjbh, dtpDjrq.Value.ToString("yyyy-MM-dd"));  //正常输入

                if (dtnew.Rows.Count == 0)
                {
                    dtnew = jyjkBiz.GetJyjg(tjbh, djh, dtpDjrq.Value.ToString("yyyy-MM-dd")); //登记号录成了体检号
                }

                if (dtnew.Rows.Count == 0)
                {
                    MessageBox.Show("未找到检验设备中的记录,请确认!");
                    return;
                }

                //获取到数据
                string str_jyname = dtnew.Rows[0]["name"].ToString(); //检验设备录入的名字
                string str_tjname = txtXm.Text.Trim();                //体检系统录入的名字
                if (str_tjname != str_jyname)
                {
                    if (DialogResult.No ==
                        MessageBox.Show("检验设备录入的名字为:" + str_jyname + " ;体检系统录入的名字为:" + str_tjname + "。是否继续?", "提示--姓名不匹配", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1))
                    {
                        return;
                    }
                }

                //MessageBox.Show("" + dtnew.Rows[0]["name"].ToString());
                //开始处理处理:分别取出来赋值到前台
                string str_wbc         = dtnew.Rows[0]["WBC"].ToString();
                string str_Bas         = dtnew.Rows[0]["Bas#"].ToString();
                string str_Bas_Percent = dtnew.Rows[0]["Bas_Percent"].ToString();
                string str_Neu         = dtnew.Rows[0]["Neu#"].ToString();
                string str_Neu_Percent = dtnew.Rows[0]["Neu_Percent"].ToString();
                string str_Eos         = dtnew.Rows[0]["Eos#"].ToString();
                string str_Eos_Percent = dtnew.Rows[0]["Eos_Percent"].ToString();
                string str_Lym         = dtnew.Rows[0]["Lym#"].ToString();
                string str_Lym_Percent = dtnew.Rows[0]["Lym_Percent"].ToString();
                string str_Mon         = dtnew.Rows[0]["Mon#"].ToString();
                string str_Mon_Percent = dtnew.Rows[0]["Mon_Percent"].ToString();
                string str_ALY         = dtnew.Rows[0]["ALY#"].ToString();
                string str_ALY_Percent = dtnew.Rows[0]["ALY_Percent"].ToString();
                string str_LIC         = dtnew.Rows[0]["LIC#"].ToString();
                string str_LIC_Percent = dtnew.Rows[0]["LIC_Percent"].ToString();
                string str_RBC         = dtnew.Rows[0]["RBC"].ToString();
                string str_HGB         = dtnew.Rows[0]["HGB"].ToString();
                string str_MCV         = dtnew.Rows[0]["MCV"].ToString();
                string str_MCH         = dtnew.Rows[0]["MCH"].ToString();
                string str_MCHC        = dtnew.Rows[0]["MCHC"].ToString();
                string str_RDW_CV      = dtnew.Rows[0]["RDW_CV"].ToString();
                string str_RDW_SD      = dtnew.Rows[0]["RDW_SD"].ToString();
                string str_HCT         = dtnew.Rows[0]["HCT"].ToString();
                string str_PLT         = dtnew.Rows[0]["PLT"].ToString();
                string str_MPV         = dtnew.Rows[0]["MPV"].ToString();
                string str_PDW         = dtnew.Rows[0]["PDW"].ToString();
                string str_PCT         = dtnew.Rows[0]["PCT"].ToString();

                if (str_wbc == "")
                {
                    str_wbc = "0";
                }
                if (str_Bas == "")
                {
                    str_Bas = "0";
                }
                if (str_Bas_Percent == "")
                {
                    str_Bas_Percent = "0";
                }
                if (str_Neu == "")
                {
                    str_Neu = "0";
                }
                if (str_Neu_Percent == "")
                {
                    str_Neu_Percent = "0";
                }
                if (str_Eos == "")
                {
                    str_Eos = "0";
                }
                if (str_Eos_Percent == "")
                {
                    str_Eos_Percent = "0";
                }
                if (str_Lym == "")
                {
                    str_Lym = "0";
                }
                if (str_Lym_Percent == "")
                {
                    str_Lym_Percent = "0";
                }
                if (str_Mon == "")
                {
                    str_Mon = "0";
                }
                if (str_Mon_Percent == "")
                {
                    str_Mon_Percent = "0";
                }
                if (str_ALY == "")
                {
                    str_ALY = "0";
                }
                if (str_ALY_Percent == "")
                {
                    str_ALY_Percent = "0";
                }
                if (str_LIC == "")
                {
                    str_LIC = "0";
                }
                if (str_LIC_Percent == "")
                {
                    str_LIC_Percent = "0";
                }
                if (str_RBC == "")
                {
                    str_RBC = "0";
                }
                if (str_HGB == "")
                {
                    str_HGB = "0";
                }
                if (str_MCV == "")
                {
                    str_MCV = "0";
                }
                if (str_MCH == "")
                {
                    str_MCH = "0";
                }
                if (str_MCHC == "")
                {
                    str_MCHC = "0";
                }
                if (str_RDW_CV == "")
                {
                    str_RDW_CV = "0";
                }
                if (str_RDW_SD == "")
                {
                    str_RDW_SD = "0";
                }
                if (str_HCT == "")
                {
                    str_HCT = "0";
                }
                if (str_PLT == "")
                {
                    str_PLT = "0";
                }
                if (str_MPV == "")
                {
                    str_MPV = "0";
                }
                if (str_PDW == "")
                {
                    str_PDW = "0";
                }
                if (str_PCT == "")
                {
                    str_PCT = "0";
                }

                for (int i = 0; i < dgvJyjg.Rows.Count; i++)
                {
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "WBC")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_wbc) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "Bas#")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_Bas) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "Bas_Percent")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_Bas_Percent) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "Neu#")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_Neu) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "Neu_Percent")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_Neu_Percent) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "Eos#")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_Eos) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "Eos_Percent")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_Eos_Percent) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "Lym#")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_Lym) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "Lym_Percent")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_Lym_Percent) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "Mon#")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_Mon) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "Mon_Percent")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_Mon_Percent) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "ALY#")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_ALY) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "ALY_Percent")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_ALY_Percent) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "LIC#")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_LIC) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "LIC_Percent")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_LIC_Percent) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "RBC")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_RBC) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "HGB")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_HGB) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "MCV")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_MCV) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "MCH")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_MCH) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "MCHC")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_MCHC) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "RDW_CV")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_RDW_CV) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "RDW_SD")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_RDW_SD) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "HCT")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_HCT) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "PLT")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_PLT) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "MPV")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_MPV) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "PDW")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_PDW) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                    if (dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim() == "PCT")
                    {
                        dgvJyjg.Rows[i].Cells["jg"].Value = (Convert.ToDecimal(str_PCT) * Convert.ToDecimal(dgvJyjg.Rows[i].Cells["bl"].Value.ToString().Trim())).ToString();
                    }
                }
                #endregion
            }
            else if (cmbJyyq.SelectedValue.ToString() == "0004")
            {
                #region BC3000
                DataTable dtBC3000 = jyjkBiz.GetBC3000Jg(djh);
                if (dtBC3000.Rows.Count <= 0)
                {
                    MessageBox.Show("没找到登记号为【" + djh + "】的体检结果!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                for (int i = 0; i < dgvJyjg.Rows.Count; i++)
                {
                    string xmsx = dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim();
                    for (int j = 0; j < dtBC3000.Rows.Count; j++)
                    {
                        //ItemCode,strValue
                        string itemCode = dtBC3000.Rows[j]["ItemCode"].ToString().Trim();
                        if (xmsx == itemCode)
                        {
                            dgvJyjg.Rows[i].Cells["jg"].Value = dtBC3000.Rows[j]["strValue"].ToString().Trim();
                            break;
                        }
                    }
                }
                #endregion
            }
            else if (cmbJyyq.SelectedValue.ToString() == "0003")
            {
                #region 生化仪
                dt = new DataTable();
                Paradox pd  = new Paradox();
                string  sql = "select sampleno from labmain where patno='" + djh + "'";
                dt = pd.GetResult_odbc(sql);
                if (dt.Rows.Count == 0)
                {
                    MessageBox.Show("没找到登记号为【" + djh + "】的体检结果!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                string samleno = dt.Rows[0][0].ToString().Trim();
                sql = "select itemno,srcresult from labdetail where sampleno='" + samleno + "'";
                dt  = new DataTable();
                dt  = pd.GetResult_odbc(sql);

                for (int i = 0; i < dgvJyjg.Rows.Count; i++)
                {
                    string xmsx = dgvJyjg.Rows[i].Cells["xmsx"].Value.ToString().Trim();
                    for (int j = 0; j < dt.Rows.Count; j++)
                    {
                        //ItemCode,strValue
                        string itemCode = dt.Rows[j]["itemno"].ToString().Trim();
                        if (xmsx == itemCode)
                        {
                            dgvJyjg.Rows[i].Cells["jg"].Value = dt.Rows[j]["srcresult"].ToString().Trim();
                            break;
                        }
                    }
                }
                #endregion
            }
            CkzPd();
        }
Exemple #10
0
 public ParadoxGame(Paradox game, Save save)
     : base(game)
 {
     _save = save;
 }