private static void GeneratePreviews(List <Parameter> parameters, Bitmap[] images, string outputDirectory, string baseName) { Logger.Debug("Generating previews..."); var states = GetPreviewStates(); var staticPreview = PreviewGenerator.CreateImage(parameters, images, new WatchState(), previewSize); staticPreview.Save(Path.Combine(outputDirectory, $"{baseName}_static.png"), ImageFormat.Png); var previewImages = PreviewGenerator.CreateAnimation(parameters, images, states, previewSize); if (IsRunningOnMono) { var i = 0; foreach (var previewImage in previewImages) { previewImage.Save(Path.Combine(outputDirectory, $"{baseName}_animated_{i}.png"), ImageFormat.Png); i++; } } else { using (var gif = AnimatedGif.AnimatedGif.Create(Path.Combine(outputDirectory, $"{baseName}_animated.gif"), 1000)) foreach (var previewImage in previewImages) { gif.AddFrame(previewImage, quality: AnimatedGif.GifQuality.Bit8); } } }
//[ResponseCache(Location = ResponseCacheLocation.Any, Duration = int.MaxValue, VaryByHeader = "Cookie", VaryByQueryKeys = new[] { "accountId", "itemId" })] public async Task <IActionResult> FeaturedImage(Guid accountId, Guid itemId) { var account = DataRepository.Get <Account>(accountId); var item = new KeyValuePair <int, WishlistItem>(); foreach (var year in account.Wishlist.Keys) { var match = account.Wishlist[year].FirstOrDefault(x => x.Id == itemId); if (match != null) { item = new KeyValuePair <int, WishlistItem>(year, match); break; } } if (item.Value.PreviewImage == null || item.Value.PreviewImage.Length == 0) { account.Wishlist[item.Key].Remove(item.Value); item.Value.PreviewImage = await PreviewGenerator.GetFeaturedImage(item.Value.Url); account.Wishlist[item.Key].Add(item.Value); DataRepository.Save(account); } return(File(item.Value.PreviewImage, "image/jpg")); }
private static void GeneratePreviews(List <Parameter> parameters, Bitmap[] images, string outputDirectory, string baseName) { Logger.Debug("Generating previews..."); var states = GetPreviewStates(); var staticPreview = PreviewGenerator.CreateImage(parameters, images, new WatchState()); staticPreview.Save(Path.Combine(outputDirectory, $"{baseName}_static.png"), ImageFormat.Png); var previewImages = PreviewGenerator.CreateAnimation(parameters, images, states); if (IsRunningOnMono) { var i = 0; foreach (var previewImage in previewImages) { previewImage.Save(Path.Combine(outputDirectory, $"{baseName}_animated_{i}.png"), ImageFormat.Png); i++; } } else { using (var gifOutput = File.OpenWrite(Path.Combine(outputDirectory, $"{baseName}_animated.gif"))) using (var encoder = new GifEncoder(gifOutput)) { foreach (var previewImage in previewImages) { encoder.AddFrame(previewImage, frameDelay: TimeSpan.FromSeconds(1)); } } } }
public void GenerateMap(int width, int height, int border, int players, CancellationToken token) { IsGenerating = true; try { CreateMap(width, height, border, players, Settings.Scenery.Weather, Settings.TimeOfDay); info = new MapInfo(MapId, Map.HeightMap.Width, Map.HeightMap.Height, Settings, players, token); int previewCount = 0; string message = null; foreach (var processor in Processors) { if (token != null && token.IsCancellationRequested) { IsGenerating = false; token.ThrowIfCancellationRequested(); } message = processor.Description; if (!string.IsNullOrWhiteSpace(message) && Log != null) { Log(processor, new LogEventArgs(message)); } processor.Process(Map, info); if (processor.UpdatePreview) { Task.Factory.StartNew(() => { int count = Interlocked.Increment(ref previewCount); PreviewGenerator.Process(Map, info); if (count == previewCount && PreviewUpdated != null) { byte[] bmpPreview; lock (PreviewGenerator.Lock) { bmpPreview = PreviewGenerator.BmpPreview; } if (count == previewCount && PreviewUpdated != null) { PreviewUpdated(this, new PreviewUpdatedEventArgs(bmpPreview)); } } }); } } } finally { IsGenerating = false; } }
void Start() { if (PreviewGenerator == null) { PreviewGenerator = new PreviewGenerator(); } PreviewGenerator.Initialize(); PreviewGenerator.bRepaintNeeded = true; }
private void GeneratePreviewGif() { _generator = new PreviewGenerator(ViewModel.Settings.FfmpegPath); _generator.Done += GeneratorOnDone; GeneratorEntry entry = _generator.CreateEntry(_settings); _generator.ProcessInThread(_settings, entry); }
public static async void EditItem(Account account, WishlistItem item) { WishlistItem remove = account.Wishlist[DateHelper.Year].SingleOrDefault(i => i.Id.Equals(item.Id)); account.Wishlist[DateHelper.Year].Remove(remove); item.PreviewImage = await PreviewGenerator.GetFeaturedImage(item.Url); account.Wishlist[DateHelper.Year].Add(item); DataRepository.Save(account); }
/// <summary> /// Регистрация одного обработчика на несколько типов /// </summary> static void Register(string[] types, PreviewGenerator pg) { foreach (string t in types) { string nt = t.ToLower(); if (!Preview.Generators.ContainsKey(nt)) { Preview.Generators.Add(nt, pg); } } }
public static async void AddItem(Account account, WishlistItem item) { if (!account.Wishlist.ContainsKey(DateHelper.Year)) { account.Wishlist.Add(DateHelper.Year, new List <WishlistItem>()); } item.Id = Guid.NewGuid(); item.PreviewImage = await PreviewGenerator.GetFeaturedImage(item.Url); account.Wishlist[DateHelper.Year].Add(item); DataRepository.Save(account); }
public override void OnInspectorGUI() { serializedObject.Update(); base.OnInspectorGUI(); serializedObject.ApplyModifiedProperties(); PreviewGenerator previewGenerator = ((PreviewGeneratorComponent)serializedObject.targetObject).PreviewGenerator; if (previewGenerator.bRepaintNeeded) { Repaint(); } }
public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddJsonFile($"appsettings.secrets.json", optional: true) .AddEnvironmentVariables(); Configuration = builder.Build(); AppSettings.Initialize(Configuration); DataRepository.Initialize(env.ContentRootPath); PreviewGenerator.Initialize(env.WebRootPath); }
public void SaveScene(object sender, EventArgs e) { if (InvokeRequired) { BeginInvoke(new MethodInvoker(delegate() { SaveScene(sender, e); })); } else { //saveFileDialog1.Filter = "Scene files (*.cws)|*.cws|STL File (*.stl)|*.stl"; saveFileDialog1.Filter = "Scene files (*." + SceneFileExt + ")|*." + SceneFileExt + "|STL File (*.stl)|*.stl"; saveFileDialog1.FilterIndex = 0; if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { //check the filter index switch (saveFileDialog1.FilterIndex) // index starts at 1 instead of 0 { case 1: SceneFile.Instance().SaveModelsIntoScene(saveFileDialog1.FileName); if (UVDLPApp.Instance().m_buildparms.exportpreview != PreviewGenerator.ePreview.None) { PreviewGenerator pg = new PreviewGenerator(); pg.ViewAngle = UVDLPApp.Instance().m_buildparms.exportpreview; Bitmap preview = pg.GeneratePreview(512, 512); SceneFile.Instance().AddPreviewImage(UVDLPApp.Instance().SceneFileName, preview, "Default", "ScenePreview.png"); } UVDLPApp.Instance().RaiseAppEvent(eAppEvent.eSceneSaved, "cws"); break; case 2: //stl file UVDLPApp.Instance().CalcScene(); // calc the scene object UVDLPApp.Instance().Scene.SaveSTL_Binary(saveFileDialog1.FileName); UVDLPApp.Instance().Scene.m_fullname = saveFileDialog1.FileName; UVDLPApp.Instance().RaiseAppEvent(eAppEvent.eSceneSaved, "stl"); break; } } } }
protected void OnEnable() { if (_previewGenerator == null) { _previewGenerator = new PreviewGenerator(); } _previewGenerator.Initialize(); string path = Path.GetDirectoryName(Application.dataPath) + _settingsPath; if (File.Exists(path)) { string settings = File.ReadAllText(path); if (settings != null) { // Then we apply them to this window EditorJsonUtility.FromJsonOverwrite(settings, _previewGenerator); } _previewGenerator.bRepaintNeeded = true; } }
public void GeneratePreviewHtmlFromTemplate_Valid_ReplacesTexts(GeneratorRequest request, PreviewGenerator sut) { // Arrange // Act var output = sut.GeneratePreviewHtmlFromTemplate(request); // Assert Assert.Contains($"{request.ImagesFolderName}/", output); Assert.Contains($"{request.OverlapPx}", output); Assert.Contains($"{request.TileSizePx}", output); Assert.Contains($"{request.ImageWidth}", output); Assert.Contains($"{request.ImageHeight}", output); }
// this happens when clicked off component or OnDisable/OnEnable with prefab reverts void OnEnable() { PreviewGenerator previewGenerator = ((PreviewGeneratorComponent)serializedObject.targetObject).PreviewGenerator; previewGenerator.bRepaintNeeded = true; }
public override bool RequiresConstantRepaint() { PreviewGenerator previewGenerator = ((PreviewGeneratorComponent)serializedObject.targetObject).PreviewGenerator; return(previewGenerator.bRepaintNeeded); }
public MapGenerator(IEnumerable <IMapProcessor> processors) { Processors = processors; PreviewGenerator = new PreviewGenerator(); NewMap(); }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { PreviewGenerator previewGenerator = (PreviewGenerator)fieldInfo.GetValue(property.serializedObject.targetObject); // need to updated values with Serialization for Undo and Changes SerializedProperty PanOffsetProperty = property.FindPropertyRelative("PanOffset"); SerializedProperty ZoomLevelProperty = property.FindPropertyRelative("ZoomLevel"); SerializedProperty ViewDirectionProperty = property.FindPropertyRelative("ViewDirection"); SerializedProperty ViewRightProperty = property.FindPropertyRelative("ViewRightDirection"); SerializedProperty ViewUpProperty = property.FindPropertyRelative("ViewUpDirection"); SerializedProperty RenderWidthProperty = property.FindPropertyRelative("RenderWidth"); SerializedProperty RenderHeightProperty = property.FindPropertyRelative("RenderHeight"); mouseOverTexture = texRect.Contains(Event.current.mousePosition); if (mouseOverTexture && (Event.current.type == EventType.MouseDrag)) { // do pan if the control key is pressed if (Event.current.control) { Vector2 panOffset = PanOffsetProperty.vector2Value; panOffset.x += Event.current.delta.x * panSpeed; panOffset.y += Event.current.delta.y * panSpeed; PanOffsetProperty.vector2Value = panOffset; } else if (Event.current.shift) { float newZoom = previewGenerator.ZoomLevel - Event.current.delta.y * zoomSpeed; if (previewGenerator.OrthographicCamera) { newZoom = Mathf.Min(.999999f, newZoom); } ZoomLevelProperty.floatValue = newZoom; } else { Vector3 viewDirection = ViewDirectionProperty.vector3Value; viewDirection += ViewRightProperty.vector3Value * (-Event.current.delta.x * rotSpeed * Mathf.Deg2Rad) + ViewUpProperty.vector3Value * (-Event.current.delta.y * rotSpeed * Mathf.Deg2Rad); viewDirection.Normalize(); ViewRightProperty.vector3Value = Vector3.Cross(ViewUpProperty.vector3Value, viewDirection).normalized; // and new up Vector ViewUpProperty.vector3Value = Vector3.Cross(viewDirection, ViewRightProperty.vector3Value).normalized; ViewDirectionProperty.vector3Value = viewDirection; } if ((previewGenerator != null) && (previewGenerator.GameObjectToRender != null)) { // allows high frame rate in inspector previewGenerator.bRepaintNeeded = true; } return; } if ((Event.current.type == EventType.ValidateCommand) && (Event.current.commandName == "UndoRedoPerformed")) { if ((previewGenerator != null) && (previewGenerator.GameObjectToRender != null)) { previewGenerator.bRepaintNeeded = true; } return; } // should we only do this during layout and paint events? EditorGUI.BeginChangeCheck(); { if (property.hasVisibleChildren) { property.NextVisible(true); do { EditorGUILayout.PropertyField(property, true); } while (property.NextVisible(false)); } } if (EditorGUI.EndChangeCheck()) { // do these outside the drag, since the user may have added new entries manually ViewDirectionProperty.vector3Value.Normalize(); // get new right Vector ViewRightProperty.vector3Value = Vector3.Cross(ViewUpProperty.vector3Value.normalized, ViewDirectionProperty.vector3Value); // and new up Vector ViewUpProperty.vector3Value = Vector3.Cross(ViewDirectionProperty.vector3Value, ViewRightProperty.vector3Value.normalized); // This can happen when the user is editing the View Direction with keyboard. if (ViewUpProperty.vector3Value == Vector3.zero) { ViewUpProperty.vector3Value = Vector3.up; } if (previewGenerator.OrthographicCamera) { ZoomLevelProperty.floatValue = Mathf.Min(.999999f, ZoomLevelProperty.floatValue); } RenderWidthProperty.intValue = Mathf.Min(Mathf.Max(RenderWidthProperty.intValue, MinTextureSize), MaxTextureSize); RenderHeightProperty.intValue = Mathf.Min(Mathf.Max(RenderHeightProperty.intValue, MinTextureSize), MaxTextureSize); previewGenerator.bRepaintNeeded = true; } if ((previewGenerator != null) && (previewGenerator.GameObjectToRender != null) && (Event.current.type == EventType.Repaint) && previewGenerator.bRepaintNeeded) { previewGenerator.RenderPreviewTexture(); previewGenerator.bRepaintNeeded = false; } Texture2D previewTexture = previewGenerator.PreviewTexture; EditorGUILayout.Space(); if (GUILayout.Button(" Save PNG... ", GUILayout.ExpandWidth(false))) { string path = Path.GetDirectoryName(previewGenerator.LastPNGPathName); string filename = Path.GetFileName(previewGenerator.LastPNGPathName); path = EditorUtility.SaveFilePanel("Save Texture as PNG", path, filename, "png"); if (path.Length != 0) { previewGenerator.SavePNG(path); } } EditorGUILayout.Space(); float boxHeight = Mathf.Min(EditorGUIUtility.currentViewWidth - 36, previewGenerator.RenderHeight); GUILayout.Box(previewTexture, GUILayout.Height(boxHeight), GUILayout.Width(EditorGUIUtility.currentViewWidth - 36)); if (Event.current.type == EventType.Repaint) { texRect = GUILayoutUtility.GetLastRect(); } EditorGUILayout.Space(); }