diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-10-15 22:37:34 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-10-15 22:37:34 +0300 |
| commit | 9375b71348f9235e642eee147e803e702c8adee8 (patch) | |
| tree | 09d1607f1c6cf8e87e763636030c4f289e877722 /Software/Visual_Studio | |
| parent | f8c7406933bf6a4d92abfc0e54db90bcf719799f (diff) | |
| download | Tango-9375b71348f9235e642eee147e803e702c8adee8.tar.gz Tango-9375b71348f9235e642eee147e803e702c8adee8.zip | |
Implemented ColorLib gradient generation feature.
Diffstat (limited to 'Software/Visual_Studio')
12 files changed, 386 insertions, 87 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml index 152797bec..b6c91f066 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml @@ -215,6 +215,8 @@ <TextBlock Margin="0 40 0 0" Text="Color Conversion Version:" HorizontalAlignment="Center"></TextBlock> <mahapps:NumericUpDown Minimum="1" Maximum="4" Value="{Binding ActiveRML.ColorConversionVersion}" HorizontalContentAlignment="Center" Background="Transparent" BorderBrush="{StaticResource DimGrayBrush}" HasDecimals="False" Margin="0 5 0 0" /> + + <CheckBox ToolTip="Use the color conversion engine to generate gradients" IsChecked="{Binding ActiveRML.UseColorLibGradients}" HorizontalAlignment="Center" Margin="0 40 0 0">Enable Gradient Generation</CheckBox> </StackPanel> </StackPanel> </Grid> diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj b/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj index c214d73ae..4e9c8af59 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj @@ -451,6 +451,7 @@ <Resource Include="Images\loading_anim.gif" /> <Content Include="..\..\Build\ColorLib\Debug\Tango.ColorLib_v4.dll"> <Link>Tango.ColorLib_v4.dll</Link> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> <Resource Include="Images\thread_loading_preview.png" /> <Content Include="Manifests\release.xml" /> @@ -725,7 +726,7 @@ if $(ConfigurationName) == Debug copy /Y "$(TargetDir)Packages" "$(TargetDir)"</ </PropertyGroup> <ProjectExtensions> <VisualStudio> - <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" /> + <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" /> </VisualStudio> </ProjectExtensions> </Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/Tango.BL/DTO/RmlDTOBase.cs b/Software/Visual_Studio/Tango.BL/DTO/RmlDTOBase.cs index dff2eec8b..51b069d54 100644 --- a/Software/Visual_Studio/Tango.BL/DTO/RmlDTOBase.cs +++ b/Software/Visual_Studio/Tango.BL/DTO/RmlDTOBase.cs @@ -238,6 +238,14 @@ namespace Tango.BL.DTO } /// <summary> + /// use color lib gradients + /// </summary> + public Boolean UseColorLibGradients + { + get; set; + } + + /// <summary> /// head type /// </summary> public Int32 HeadType diff --git a/Software/Visual_Studio/Tango.BL/Entities/RmlBase.cs b/Software/Visual_Studio/Tango.BL/Entities/RmlBase.cs index dc22ac33c..2d3162c95 100644 --- a/Software/Visual_Studio/Tango.BL/Entities/RmlBase.cs +++ b/Software/Visual_Studio/Tango.BL/Entities/RmlBase.cs @@ -67,6 +67,8 @@ namespace Tango.BL.Entities public event EventHandler<Int32> ColorConversionVersionChanged; + public event EventHandler<Boolean> UseColorLibGradientsChanged; + public event EventHandler<Int32> HeadTypeChanged; public event EventHandler<Int32> QualificationLevelChanged; @@ -847,6 +849,33 @@ namespace Tango.BL.Entities } } + protected Boolean _usecolorlibgradients; + + /// <summary> + /// Gets or sets the rmlbase use color lib gradients. + /// </summary> + + [Column("USE_COLOR_LIB_GRADIENTS")] + + public Boolean UseColorLibGradients + { + get + { + return _usecolorlibgradients; + } + + set + { + if (_usecolorlibgradients != value) + { + _usecolorlibgradients = value; + + OnUseColorLibGradientsChanged(value); + + } + } + } + protected Int32 _headtype; /// <summary> @@ -1832,6 +1861,15 @@ namespace Tango.BL.Entities } /// <summary> + /// Called when the UseColorLibGradients has changed. + /// </summary> + protected virtual void OnUseColorLibGradientsChanged(Boolean usecolorlibgradients) + { + UseColorLibGradientsChanged?.Invoke(this, usecolorlibgradients); + RaisePropertyChanged(nameof(UseColorLibGradients)); + } + + /// <summary> /// Called when the HeadType has changed. /// </summary> protected virtual void OnHeadTypeChanged(Int32 headtype) diff --git a/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs b/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs index 14569fdc0..a91e5e6c7 100644 --- a/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs +++ b/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs @@ -32,6 +32,8 @@ namespace Tango.ColorConversion public static extern bool FreeLibrary(IntPtr hModule); } + #region Color Conversion + public ConversionOutput Convert(ConversionInput conversionInput, int version) { if (version < 1) version = 1; @@ -275,7 +277,7 @@ namespace Tango.ColorConversion public Task<ConversionOutput> ConvertAsync(BrushStop stop, Configuration configuration, Rml rml, bool generateHive) { - return Task.Factory.StartNew<ConversionOutput>(() => + return Task.Factory.StartNew<ConversionOutput>(() => { return Convert(stop, configuration, rml, generateHive); }); @@ -296,5 +298,164 @@ namespace Tango.ColorConversion return Convert(job, color, generateHive); }); } + + #endregion + + #region Gradient + + public GradientConversionOutput GenerateGradient(GradientConversionInput input, int version) + { + if (version < 1) version = 1; + + String str = input.ToString(); + + String fileName = $"{AssemblyHelper.GetCurrentAssemblyFolder()}\\Tango.ColorLib_v{version}.dll"; + + if (!File.Exists(fileName)) + { + throw new FileNotFoundException($"Could not find color conversion library '{fileName}'."); + } + + IntPtr pDll = NativeMethods.LoadLibrary(fileName); + IntPtr pAddressOfFunctionToCall = NativeMethods.GetProcAddress(pDll, "GenerateGradient"); + NativeMethodDelegate generateGradient = (NativeMethodDelegate)Marshal.GetDelegateForFunctionPointer( + pAddressOfFunctionToCall, + typeof(NativeMethodDelegate)); + + NativePMR<GradientConversionInput, GradientConversionOutput> nativePMR = new NativePMR<GradientConversionInput, GradientConversionOutput>(generateGradient); + GradientConversionOutput output = nativePMR.Invoke(input); + + bool result = NativeMethods.FreeLibrary(pDll); + + if (output.HasError) + { + throw new ExternalException($"Color Conversion Error: {output.ErrorMessage}!"); + } + + return output; + } + + public GradientConversionOutput GenerateGradient(List<BrushStop> stops, double segmentLength, Rml rml, Configuration configuration) + { + if (stops.Count == 0) + { + throw new ArgumentOutOfRangeException("THe number of brush stops cannot be zero."); + } + + if (rml == null) + { + throw new ArgumentNullException("Specified RML is a null reference."); + } + + if (rml.Cct == null || rml.Cct.Data == null) + { + throw new ArgumentNullException("Specified RML CCT data is null."); + } + + if (configuration == null) + { + throw new ArgumentNullException("Specified machine configuration is a null reference."); + } + + GradientConversionInput conversionInput = new GradientConversionInput(); + + conversionInput.SegmentLength = segmentLength; + conversionInput.ForwardData = ByteString.CopyFrom(rml.Cct.Data); + + conversionInput.ThreadL = rml.WhitePointL; + conversionInput.ThreadA = rml.WhitePointA; + conversionInput.ThreadB = rml.WhitePointB; + + foreach (var processTable in rml.GetActiveProcessGroup().ProcessParametersTables) + { + conversionInput.ProcessRanges.Add(new ProcessRange() + { + MinInkUptake = processTable.MinInkUptake, + MaxInkUptake = processTable.MaxInkUptake, + }); + } + + foreach (var ids_pack in configuration.GetSupportedIdsPacks(rml)) + { + CalibrationData calibrationData = Cat.CreateDemoCalibrationData((PMR.ColorLab.LiquidType)ids_pack.LiquidType.Code); + + //TODO: Enable Machine Calibration Also.. + + //var machine_cat = ids_pack.LiquidType.Cats.SingleOrDefault(x => x.MachineGuid == machine.Guid && x.RmlGuid == job.RmlGuid); + + //if (machine_cat != null) + //{ + // calibrationData = machine_cat.GetCalibrationData(); + //} + //else + //{ + var rml_cat = rml.LiquidTypesRmls.SingleOrDefault(x => x.LiquidType.Code == ids_pack.LiquidType.Code); + + if (rml_cat != null) + { + calibrationData = rml_cat.GetCalibrationData(); + } + //} + + conversionInput.InputLiquids.Add(new InputLiquid() + { + LiquidType = (PMR.ColorLab.LiquidType)ids_pack.LiquidType.Code, + MaxNanoliterPerCentimeter = ids_pack.LiquidType.LiquidTypesRmls.Single(x => x.Rml == rml).MaxNlPerCm, + CalibrationData = calibrationData, + }); + } + + foreach (var stop in stops) + { + GradientInputStop istop = new GradientInputStop(); + istop.ColorSpace = (PMR.ColorLab.ColorSpace)stop.ColorSpace.Code; + istop.L = stop.L; + istop.A = stop.A; + istop.B = stop.B; + istop.Red = stop.Red; + istop.Green = stop.Green; + istop.Blue = stop.Blue; + istop.Cyan = stop.Cyan; + istop.Magenta = stop.Magenta; + istop.Yellow = stop.Yellow; + istop.Key = stop.Black; + + foreach (var liquidVolume in stop.LiquidVolumesOrderedPigmented) + { + istop.LiquidVolumes.Add(new PMR.ColorLab.LiquidVolume() + { + LiquidType = (PMR.ColorLab.LiquidType)liquidVolume.LiquidType, + Volume = liquidVolume.Volume + }); + } + + conversionInput.Stops.Add(istop); + } + + return GenerateGradient(conversionInput, rml.ColorConversionVersion); + } + + public GradientConversionOutput GenerateGradient(Segment segment, Rml rml, Configuration configuration) + { + return GenerateGradient(segment.BrushStops.ToList(), segment.Length, segment.Job.Rml, configuration); + } + + public GradientConversionOutput GenerateGradient(Segment segment) + { + if (segment.Job == null) + { + throw new ArgumentNullException("Specified segment job is a null reference."); + } + + if (segment.Job.Rml == null) + { + throw new ArgumentNullException("Specified segment job RML is a null reference."); + } + + return GenerateGradient(segment, segment.Job.Rml, segment.Job.Machine.Configuration); + } + + #endregion + } } diff --git a/Software/Visual_Studio/Tango.ColorConversion/IColorConverter.cs b/Software/Visual_Studio/Tango.ColorConversion/IColorConverter.cs index 5206509a9..aa0ff2ab9 100644 --- a/Software/Visual_Studio/Tango.ColorConversion/IColorConverter.cs +++ b/Software/Visual_Studio/Tango.ColorConversion/IColorConverter.cs @@ -24,5 +24,9 @@ namespace Tango.ColorConversion bool IsOutOfGamut(BrushStop stop); ProcessParametersTable GetRecommendedProcessParameters(Job job); ProcessParametersTable GetRecommendedProcessParameters(Job job, ProcessParametersTablesGroup group); + GradientConversionOutput GenerateGradient(GradientConversionInput input, int version); + GradientConversionOutput GenerateGradient(List<BrushStop> stops, double segmentLength, Rml rml, Configuration configuration); + GradientConversionOutput GenerateGradient(Segment segment, Rml rml, Configuration configuration); + GradientConversionOutput GenerateGradient(Segment segment); } } diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/RML.cs b/Software/Visual_Studio/Tango.DAL.Remote/DB/RML.cs index fc7354e0e..93648de50 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/RML.cs +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/RML.cs @@ -56,6 +56,7 @@ namespace Tango.DAL.Remote.DB public byte[] THUMBNAIL { get; set; } public string CCT_GUID { get; set; } public int COLOR_CONVERSION_VERSION { get; set; } + public bool USE_COLOR_LIB_GRADIENTS { get; set; } public int HEAD_TYPE { get; set; } public int QUALIFICATION_LEVEL { get; set; } public Nullable<System.DateTime> QUALIFICATION_DATE { get; set; } diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx index 5c0ea72d2..4c2140d39 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx @@ -981,6 +981,7 @@ <Property Name="THUMBNAIL" Type="image" /> <Property Name="CCT_GUID" Type="varchar" MaxLength="36" /> <Property Name="COLOR_CONVERSION_VERSION" Type="int" Nullable="false" /> + <Property Name="USE_COLOR_LIB_GRADIENTS" Type="bit" Nullable="false" /> <Property Name="HEAD_TYPE" Type="int" Nullable="false" /> <Property Name="QUALIFICATION_LEVEL" Type="int" Nullable="false" /> <Property Name="QUALIFICATION_DATE" Type="datetime2" Precision="3" /> @@ -4421,6 +4422,7 @@ <Property Name="THUMBNAIL" Type="Binary" MaxLength="Max" FixedLength="false" /> <Property Name="CCT_GUID" Type="String" MaxLength="36" FixedLength="false" Unicode="false" /> <Property Name="COLOR_CONVERSION_VERSION" Type="Int32" Nullable="false" /> + <Property Name="USE_COLOR_LIB_GRADIENTS" Type="Boolean" Nullable="false" /> <Property Name="HEAD_TYPE" Type="Int32" Nullable="false" /> <Property Name="QUALIFICATION_LEVEL" Type="Int32" Nullable="false" /> <Property Name="QUALIFICATION_DATE" Type="DateTime" Precision="3" /> @@ -6948,6 +6950,7 @@ <ScalarProperty Name="QUALIFICATION_DATE" ColumnName="QUALIFICATION_DATE" /> <ScalarProperty Name="QUALIFICATION_LEVEL" ColumnName="QUALIFICATION_LEVEL" /> <ScalarProperty Name="HEAD_TYPE" ColumnName="HEAD_TYPE" /> + <ScalarProperty Name="USE_COLOR_LIB_GRADIENTS" ColumnName="USE_COLOR_LIB_GRADIENTS" /> <ScalarProperty Name="COLOR_CONVERSION_VERSION" ColumnName="COLOR_CONVERSION_VERSION" /> <ScalarProperty Name="CCT_GUID" ColumnName="CCT_GUID" /> <ScalarProperty Name="THUMBNAIL" ColumnName="THUMBNAIL" /> diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram index 40cd29ef4..f3a3cdcc3 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram @@ -5,88 +5,88 @@ <!-- Diagram content (shape and connector positions) --> <edmx:Diagrams> <Diagram DiagramId="f9ae01d708754bbd997add25a4bacc79" Name="Diagram1" ZoomLevel="97"> - <EntityTypeShape EntityType="RemoteModel.ACTION_LOGS" Width="1.5" PointX="11.25" PointY="27.75" /> - <EntityTypeShape EntityType="RemoteModel.ADDRESS" Width="1.5" PointX="1.5" PointY="56.375" /> - <EntityTypeShape EntityType="RemoteModel.APPLICATION_DISPLAY_PANEL_VERSIONS" Width="1.5" PointX="1.5" PointY="67.625" /> - <EntityTypeShape EntityType="RemoteModel.APPLICATION_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="73.5" /> - <EntityTypeShape EntityType="RemoteModel.APPLICATION_OS_VERSIONS" Width="1.5" PointX="1.5" PointY="80.75" /> - <EntityTypeShape EntityType="RemoteModel.BRUSH_STOPS" Width="1.5" PointX="15.75" PointY="17" /> - <EntityTypeShape EntityType="RemoteModel.CARTRIDGE_TYPES" Width="1.5" PointX="6" PointY="39.75" /> - <EntityTypeShape EntityType="RemoteModel.CAT" Width="1.5" PointX="8.25" PointY="15.875" /> - <EntityTypeShape EntityType="RemoteModel.CCT" Width="1.5" PointX="0.75" PointY="32.5" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS" Width="1.5" PointX="1.5" PointY="7.75" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_GROUPS" Width="1.5" PointX="3.75" PointY="8.25" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS" Width="1.5" PointX="6" PointY="7" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS_RECIPES" Width="1.5" PointX="8.25" PointY="19.875" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_SPACES" Width="1.5" PointX="9" PointY="24.75" /> - <EntityTypeShape EntityType="RemoteModel.CONFIGURATION" Width="1.5" PointX="3.75" PointY="73.25" /> - <EntityTypeShape EntityType="RemoteModel.CONTACT" Width="1.5" PointX="1.5" PointY="60.5" /> - <EntityTypeShape EntityType="RemoteModel.CUSTOMER" Width="1.5" PointX="9" PointY="34" /> - <EntityTypeShape EntityType="RemoteModel.DISPENSER_TYPES" Width="1.5" PointX="3.75" PointY="90.25" /> - <EntityTypeShape EntityType="RemoteModel.DISPENSER" Width="1.5" PointX="6" PointY="89.625" /> - <EntityTypeShape EntityType="RemoteModel.EMBEDDED_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="70.625" /> - <EntityTypeShape EntityType="RemoteModel.EVENT_TYPES" Width="1.5" PointX="9" PointY="56" /> - <EntityTypeShape EntityType="RemoteModel.FIBER_SHAPES" Width="1.5" PointX="0.75" PointY="29.625" /> - <EntityTypeShape EntityType="RemoteModel.FIBER_SYNTHS" Width="1.5" PointX="0.75" PointY="20.375" /> - <EntityTypeShape EntityType="RemoteModel.FSE_VERSIONS" Width="1.5" PointX="11.25" PointY="31.5" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWER_TYPES" Width="1.5" PointX="7.5" PointY="98" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWERS" Width="1.5" PointX="9.75" PointY="83.625" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSOR_TYPES" Width="1.5" PointX="1.5" PointY="84" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSORS" Width="1.5" PointX="3.75" PointY="78.75" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCER_TYPES" Width="1.5" PointX="4.5" PointY="94" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCERS" Width="1.5" PointX="6.75" PointY="76" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTOR_TYPES" Width="1.5" PointX="7.5" PointY="93.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTORS" Width="1.5" PointX="9.75" PointY="73.625" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROL_TYPES" Width="1.5" PointX="4.5" PointY="98" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROLS" Width="1.5" PointX="6.75" PointY="82.125" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSOR_TYPES" Width="1.5" PointX="6.5" PointY="62" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSORS" Width="1.5" PointX="8.75" PointY="69.75" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="76.375" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDER_TYPES" Width="1.5" PointX="1.5" PointY="88" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDERS" Width="1.5" PointX="3.75" PointY="82.875" /> - <EntityTypeShape EntityType="RemoteModel.IDS_PACK_FORMULAS" Width="1.5" PointX="6" PointY="33.25" /> - <EntityTypeShape EntityType="RemoteModel.IDS_PACKS" Width="1.5" PointX="8.25" PointY="37.625" /> - <EntityTypeShape EntityType="RemoteModel.JOB_RUNS" Width="1.5" PointX="16.75" PointY="0.75" /> - <EntityTypeShape EntityType="RemoteModel.JOB" Width="1.5" PointX="11.25" PointY="16.5" /> - <EntityTypeShape EntityType="RemoteModel.LINEAR_MASS_DENSITY_UNITS" Width="1.5" PointX="0.75" PointY="12.875" /> - <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES" Width="1.5" PointX="6" PointY="2.125" /> - <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES_RMLS" Width="1.5" PointX="5.25" PointY="16.125" /> - <EntityTypeShape EntityType="RemoteModel.MACHINE_STUDIO_VERSIONS" Width="1.5" PointX="11.25" PointY="43.125" /> - <EntityTypeShape EntityType="RemoteModel.MACHINE_VERSIONS" Width="1.5" PointX="3.75" PointY="64.375" /> - <EntityTypeShape EntityType="RemoteModel.MACHINE" Width="1.5" PointX="6" PointY="65.125" /> - <EntityTypeShape EntityType="RemoteModel.MACHINES_EVENTS" Width="1.5" PointX="11.25" PointY="49.375" /> - <EntityTypeShape EntityType="RemoteModel.MEDIA_CONDITIONS" Width="1.5" PointX="0.75" PointY="15.875" /> - <EntityTypeShape EntityType="RemoteModel.MEDIA_MATERIALS" Width="1.5" PointX="0.75" PointY="23.75" /> - <EntityTypeShape EntityType="RemoteModel.MEDIA_PURPOSES" Width="1.5" PointX="0.75" PointY="26.625" /> - <EntityTypeShape EntityType="RemoteModel.MID_TANK_TYPES" Width="1.5" PointX="6" PointY="36.625" /> - <EntityTypeShape EntityType="RemoteModel.ORGANIZATION" Width="1.5" PointX="3.75" PointY="58.375" /> - <EntityTypeShape EntityType="RemoteModel.PERMISSION" Width="1.5" PointX="12" PointY="4.625" /> - <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES" Width="1.5" PointX="7.5" PointY="46.625" /> - <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES_GROUPS" Width="1.5" PointX="5.25" PointY="49.375" /> - <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS" Width="1.5" PointX="13.75" PointY="13" /> - <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS_VERSIONS" Width="1.5" PointX="16" PointY="13.125" /> - <EntityTypeShape EntityType="RemoteModel.RML" Width="1.5" PointX="3" PointY="15.375" /> - <EntityTypeShape EntityType="RemoteModel.RMLS_SPOOLS" Width="1.5" PointX="5.25" PointY="19.875" /> - <EntityTypeShape EntityType="RemoteModel.ROLE" Width="1.5" PointX="12" PointY="8.5" /> - <EntityTypeShape EntityType="RemoteModel.ROLES_PERMISSIONS" Width="1.5" PointX="14.25" PointY="8.625" /> - <EntityTypeShape EntityType="RemoteModel.SEGMENT" Width="1.5" PointX="13.5" PointY="20.125" /> - <EntityTypeShape EntityType="RemoteModel.SITE" Width="1.5" PointX="3" PointY="29.125" /> - <EntityTypeShape EntityType="RemoteModel.SITES_CATALOGS" Width="1.5" PointX="11.25" PointY="12.625" /> - <EntityTypeShape EntityType="RemoteModel.SITES_RMLS" Width="1.5" PointX="5.25" PointY="24.375" /> - <EntityTypeShape EntityType="RemoteModel.SPOOL_TYPES" Width="1.5" PointX="9" PointY="5.75" /> - <EntityTypeShape EntityType="RemoteModel.SPOOL" Width="1.5" PointX="11.25" PointY="38.25" /> - <EntityTypeShape EntityType="RemoteModel.sysdiagram" Width="1.5" PointX="0.75" PointY="0.75" /> - <EntityTypeShape EntityType="RemoteModel.TANGO_UPDATES" Width="1.5" PointX="2.75" PointY="0.75" /> - <EntityTypeShape EntityType="RemoteModel.TANGO_VERSIONS" Width="1.5" PointX="14.25" PointY="45.875" /> - <EntityTypeShape EntityType="RemoteModel.TECH_CONTROLLERS" Width="1.5" PointX="8.75" PointY="0.75" /> - <EntityTypeShape EntityType="RemoteModel.TECH_DISPENSERS" Width="1.5" PointX="10.75" PointY="0.75" /> - <EntityTypeShape EntityType="RemoteModel.TECH_HEATERS" Width="1.5" PointX="12.75" PointY="0.75" /> - <EntityTypeShape EntityType="RemoteModel.TECH_IOS" Width="1.5" PointX="17.75" PointY="16.75" /> - <EntityTypeShape EntityType="RemoteModel.TECH_MONITORS" Width="1.5" PointX="16.75" PointY="8.75" /> - <EntityTypeShape EntityType="RemoteModel.TECH_VALVES" Width="1.5" PointX="18.75" PointY="0.75" /> - <EntityTypeShape EntityType="RemoteModel.USER" Width="1.5" PointX="9" PointY="28.25" /> - <EntityTypeShape EntityType="RemoteModel.USERS_ROLES" Width="1.5" PointX="14.25" PointY="29.625" /> - <EntityTypeShape EntityType="RemoteModel.WINDING_METHODS" Width="1.5" PointX="9" PointY="11.625" /> + <EntityTypeShape EntityType="RemoteModel.ACTION_LOGS" Width="1.5" PointX="11.25" PointY="8" /> + <EntityTypeShape EntityType="RemoteModel.ADDRESS" Width="1.5" PointX="4.5" PointY="35.25" /> + <EntityTypeShape EntityType="RemoteModel.APPLICATION_DISPLAY_PANEL_VERSIONS" Width="1.5" PointX="4.5" PointY="54.25" /> + <EntityTypeShape EntityType="RemoteModel.APPLICATION_FIRMWARE_VERSIONS" Width="1.5" PointX="4.5" PointY="60.125" /> + <EntityTypeShape EntityType="RemoteModel.APPLICATION_OS_VERSIONS" Width="1.5" PointX="4.5" PointY="57.25" /> + <EntityTypeShape EntityType="RemoteModel.BRUSH_STOPS" Width="1.5" PointX="15.75" PointY="18.875" /> + <EntityTypeShape EntityType="RemoteModel.CARTRIDGE_TYPES" Width="1.5" PointX="6.75" PointY="29.875" /> + <EntityTypeShape EntityType="RemoteModel.CAT" Width="1.5" PointX="5.25" PointY="25.75" /> + <EntityTypeShape EntityType="RemoteModel.CCT" Width="1.5" PointX="0.75" PointY="14.75" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS" Width="1.5" PointX="1.5" PointY="38.625" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_GROUPS" Width="1.5" PointX="0.75" PointY="6" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS" Width="1.5" PointX="3" PointY="4.75" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS_RECIPES" Width="1.5" PointX="5.25" PointY="21.625" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_SPACES" Width="1.5" PointX="9" PointY="7" /> + <EntityTypeShape EntityType="RemoteModel.CONFIGURATION" Width="1.5" PointX="6.75" PointY="59.875" /> + <EntityTypeShape EntityType="RemoteModel.CONTACT" Width="1.5" PointX="4.5" PointY="31.25" /> + <EntityTypeShape EntityType="RemoteModel.CUSTOMER" Width="1.5" PointX="9" PointY="33.75" /> + <EntityTypeShape EntityType="RemoteModel.DISPENSER_TYPES" Width="1.5" PointX="4.5" PointY="40.375" /> + <EntityTypeShape EntityType="RemoteModel.DISPENSER" Width="1.5" PointX="6.75" PointY="39.75" /> + <EntityTypeShape EntityType="RemoteModel.EMBEDDED_FIRMWARE_VERSIONS" Width="1.5" PointX="4.5" PointY="63" /> + <EntityTypeShape EntityType="RemoteModel.EVENT_TYPES" Width="1.5" PointX="12" PointY="32.125" /> + <EntityTypeShape EntityType="RemoteModel.FIBER_SHAPES" Width="1.5" PointX="0.75" PointY="26" /> + <EntityTypeShape EntityType="RemoteModel.FIBER_SYNTHS" Width="1.5" PointX="0.75" PointY="18" /> + <EntityTypeShape EntityType="RemoteModel.FSE_VERSIONS" Width="1.5" PointX="11.25" PointY="4.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWER_TYPES" Width="1.5" PointX="4.5" PointY="70.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWERS" Width="1.5" PointX="6.75" PointY="66.125" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSOR_TYPES" Width="1.5" PointX="4.5" PointY="74.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSORS" Width="1.5" PointX="6.75" PointY="74.25" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCER_TYPES" Width="1.5" PointX="7.5" PointY="81.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCERS" Width="1.5" PointX="9.75" PointY="69.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTOR_TYPES" Width="1.5" PointX="10.5" PointY="79.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTORS" Width="1.5" PointX="12.75" PointY="69.125" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROL_TYPES" Width="1.5" PointX="9.5" PointY="55.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROLS" Width="1.5" PointX="11.75" PointY="57.625" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSOR_TYPES" Width="1.5" PointX="12.5" PointY="53.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSORS" Width="1.5" PointX="14.75" PointY="65.25" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_VERSIONS" Width="1.5" PointX="4.5" PointY="66" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDER_TYPES" Width="1.5" PointX="9.5" PointY="75.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDERS" Width="1.5" PointX="11.75" PointY="65.375" /> + <EntityTypeShape EntityType="RemoteModel.IDS_PACK_FORMULAS" Width="1.5" PointX="6.75" PointY="55" /> + <EntityTypeShape EntityType="RemoteModel.IDS_PACKS" Width="1.5" PointX="9" PointY="37.125" /> + <EntityTypeShape EntityType="RemoteModel.JOB_RUNS" Width="1.5" PointX="16.75" PointY="8.625" /> + <EntityTypeShape EntityType="RemoteModel.JOB" Width="1.5" PointX="11.25" PointY="18.25" /> + <EntityTypeShape EntityType="RemoteModel.LINEAR_MASS_DENSITY_UNITS" Width="1.5" PointX="0.75" PointY="22.25" /> + <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES" Width="1.5" PointX="6" PointY="12.625" /> + <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES_RMLS" Width="1.5" PointX="8.25" PointY="18" /> + <EntityTypeShape EntityType="RemoteModel.MACHINE_STUDIO_VERSIONS" Width="1.5" PointX="11.25" PointY="13.875" /> + <EntityTypeShape EntityType="RemoteModel.MACHINE_VERSIONS" Width="1.5" PointX="6.75" PointY="70.25" /> + <EntityTypeShape EntityType="RemoteModel.MACHINE" Width="1.5" PointX="9" PointY="59.125" /> + <EntityTypeShape EntityType="RemoteModel.MACHINES_EVENTS" Width="1.5" PointX="14.25" PointY="37.5" /> + <EntityTypeShape EntityType="RemoteModel.MEDIA_CONDITIONS" Width="1.5" PointX="0.75" PointY="31.875" /> + <EntityTypeShape EntityType="RemoteModel.MEDIA_MATERIALS" Width="1.5" PointX="0.75" PointY="34.75" /> + <EntityTypeShape EntityType="RemoteModel.MEDIA_PURPOSES" Width="1.5" PointX="0.75" PointY="28.875" /> + <EntityTypeShape EntityType="RemoteModel.MID_TANK_TYPES" Width="1.5" PointX="6.75" PointY="78.375" /> + <EntityTypeShape EntityType="RemoteModel.ORGANIZATION" Width="1.5" PointX="6.75" PointY="33.25" /> + <EntityTypeShape EntityType="RemoteModel.PERMISSION" Width="1.5" PointX="12" PointY="46.125" /> + <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES" Width="1.5" PointX="7.5" PointY="45" /> + <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES_GROUPS" Width="1.5" PointX="5.25" PointY="47.75" /> + <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS" Width="1.5" PointX="13.75" PointY="4.75" /> + <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS_VERSIONS" Width="1.5" PointX="16" PointY="5" /> + <EntityTypeShape EntityType="RemoteModel.RML" Width="1.5" PointX="3" PointY="17" /> + <EntityTypeShape EntityType="RemoteModel.RMLS_SPOOLS" Width="1.5" PointX="5.25" PointY="17.75" /> + <EntityTypeShape EntityType="RemoteModel.ROLE" Width="1.5" PointX="12" PointY="0.75" /> + <EntityTypeShape EntityType="RemoteModel.ROLES_PERMISSIONS" Width="1.5" PointX="14.25" PointY="0.875" /> + <EntityTypeShape EntityType="RemoteModel.SEGMENT" Width="1.5" PointX="13.5" PointY="22" /> + <EntityTypeShape EntityType="RemoteModel.SITE" Width="1.5" PointX="6" PointY="9" /> + <EntityTypeShape EntityType="RemoteModel.SITES_CATALOGS" Width="1.5" PointX="8.25" PointY="25.375" /> + <EntityTypeShape EntityType="RemoteModel.SITES_RMLS" Width="1.5" PointX="8.25" PointY="22.125" /> + <EntityTypeShape EntityType="RemoteModel.SPOOL_TYPES" Width="1.5" PointX="3" PointY="11.25" /> + <EntityTypeShape EntityType="RemoteModel.SPOOL" Width="1.5" PointX="11.25" PointY="37.875" /> + <EntityTypeShape EntityType="RemoteModel.sysdiagram" Width="1.5" PointX="5.75" PointY="2.625" /> + <EntityTypeShape EntityType="RemoteModel.TANGO_UPDATES" Width="1.5" PointX="17.75" PointY="16.625" /> + <EntityTypeShape EntityType="RemoteModel.TANGO_VERSIONS" Width="1.5" PointX="11.25" PointY="42" /> + <EntityTypeShape EntityType="RemoteModel.TECH_CONTROLLERS" Width="1.5" PointX="18.75" PointY="2.625" /> + <EntityTypeShape EntityType="RemoteModel.TECH_DISPENSERS" Width="1.5" PointX="5.75" PointY="5.625" /> + <EntityTypeShape EntityType="RemoteModel.TECH_HEATERS" Width="1.5" PointX="13.75" PointY="8.625" /> + <EntityTypeShape EntityType="RemoteModel.TECH_IOS" Width="1.5" PointX="18.75" PointY="6.625" /> + <EntityTypeShape EntityType="RemoteModel.TECH_MONITORS" Width="1.5" PointX="18.75" PointY="11.625" /> + <EntityTypeShape EntityType="RemoteModel.TECH_VALVES" Width="1.5" PointX="19.75" PointY="16.625" /> + <EntityTypeShape EntityType="RemoteModel.USER" Width="1.5" PointX="9" PointY="10.5" /> + <EntityTypeShape EntityType="RemoteModel.USERS_ROLES" Width="1.5" PointX="14.25" PointY="11.875" /> + <EntityTypeShape EntityType="RemoteModel.WINDING_METHODS" Width="1.5" PointX="9" PointY="3.875" /> <AssociationConnector Association="RemoteModel.FK_ACTION_LOGS_USERS" /> <AssociationConnector Association="RemoteModel.FK_ORGANIZATIONS_ADDRESSES" /> <AssociationConnector Association="RemoteModel.FK_USERS_ADDRESSES" /> diff --git a/Software/Visual_Studio/Tango.Integration/Operation/DefaultGradientGenerationConfiguration.cs b/Software/Visual_Studio/Tango.Integration/Operation/DefaultGradientGenerationConfiguration.cs index ee4e2097e..ef275479b 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/DefaultGradientGenerationConfiguration.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/DefaultGradientGenerationConfiguration.cs @@ -9,6 +9,7 @@ using Tango.BL.Enumerations; using Tango.ColorConversion; using Tango.Core; using Tango.Core.ExtensionMethods; +using Tango.PMR.ColorLab; namespace Tango.Integration.Operation { @@ -56,6 +57,8 @@ namespace Tango.Integration.Operation ResolutionCM = 500; } + #region Standard Method + /// <summary> /// Creates a collection of brush stops representing the required gradient steps. /// </summary> @@ -66,6 +69,11 @@ namespace Tango.Integration.Operation /// <returns></returns> public List<BrushStop> Generate(Segment segment, Job job, ProcessParametersTable processParameters, Action<PreparingJobProgressEventArgs> progress = null) { + if (processParameters.ProcessParametersTablesGroup.Rml.UseColorLibGradients) + { + return GenerateUsingColorLib(segment, job, processParameters, progress); + } + aborted = false; List<BrushStop> stops = new List<BrushStop>(); @@ -232,6 +240,72 @@ namespace Tango.Integration.Operation return color; } + #endregion + + #region ColorLib Method + + public List<BrushStop> GenerateUsingColorLib(Segment segment, Job job, ProcessParametersTable processParameters, Action<PreparingJobProgressEventArgs> progress = null) + { + aborted = false; + + List<BrushStop> stops = segment.BrushStops.Select(x => x.Clone()).ToList(); + + var refStop = segment.BrushStops.First().Clone(segment); + + IColorConverter converter = new DefaultColorConverter(); + + foreach (var stop in stops) + { + if (aborted) return stops; + + if (stop.LiquidVolumes == null) + { + stop.SetLiquidVolumes(job.Machine.Configuration, job.Rml, processParameters); + } + } + + var conversionOutput = converter.GenerateGradient(stops, segment.Length, job.Rml, job.Machine.Configuration); + + List<BrushStop> newStops = new List<BrushStop>(); + + int stopIndex = 1; + + foreach (var stop in conversionOutput.Stops) + { + var newStop = refStop.Clone(segment); + + newStop.OffsetPercent = stop.Offset * 100d; + newStop.OffsetMeters = segment.Length * stop.Offset; + newStop.StopIndex = stopIndex++; + + newStop.SetVolume(LiquidTypes.Cyan, GetStopVolume(stop, PMR.ColorLab.LiquidType.Cyan)); + newStop.SetVolume(LiquidTypes.Magenta, GetStopVolume(stop, PMR.ColorLab.LiquidType.Magenta)); + newStop.SetVolume(LiquidTypes.Yellow, GetStopVolume(stop, PMR.ColorLab.LiquidType.Yellow)); + newStop.SetVolume(LiquidTypes.Black, GetStopVolume(stop, PMR.ColorLab.LiquidType.Black)); + + newStop.SetLiquidVolumes(job.Machine.Configuration, job.Rml, processParameters); + + newStops.Add(newStop); + } + + progress?.Invoke(new PreparingJobProgressEventArgs() + { + Job = job, + Total = 100, + Progress = 100, + }); + + return newStops; + } + + private double GetStopVolume(GradientOutputStop stop, PMR.ColorLab.LiquidType liquidType) + { + var liquid = stop.OutputLiquids.SingleOrDefault(x => x.LiquidType == liquidType); + return liquid != null ? liquid.Volume : 0; + } + + #endregion + /// <summary> /// Aborts the current generation. /// </summary> diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs index 6b08dff40..0fa8cc290 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs @@ -1836,10 +1836,17 @@ namespace Tango.Integration.Operation if (GradientGenerationConfiguration != null && GradientGenerationConfiguration.IsEnabled && segment.BrushStops.Count > 1) { LogManager.Log($"Generate segment {segment.SegmentIndex} gradient..."); - stops = GradientGenerationConfiguration.Generate(segment, job, processParameters, (e) => + try { - PreparingJobProgress?.Invoke(this, e); - }); + stops = GradientGenerationConfiguration.Generate(segment, job, processParameters, (e) => + { + PreparingJobProgress?.Invoke(this, e); + }); + } + catch (Exception ex) + { + throw new InvalidOperationException($"Error occurred while trying to generate a gradient.\n{ex.Message}"); + } LogManager.Log($"Gradient generated."); PreparingJobProgress?.Invoke(this, new PreparingJobProgressEventArgs() diff --git a/Software/Visual_Studio/Tango.SQLExaminer/SQLExaminer/Configurations/OverrideData.xml b/Software/Visual_Studio/Tango.SQLExaminer/SQLExaminer/Configurations/OverrideData.xml Binary files differindex 4bcfeb09f..6db1eb778 100644 --- a/Software/Visual_Studio/Tango.SQLExaminer/SQLExaminer/Configurations/OverrideData.xml +++ b/Software/Visual_Studio/Tango.SQLExaminer/SQLExaminer/Configurations/OverrideData.xml |
