Pause preview while adding effects

This commit is contained in:
Jaex 2017-09-23 16:17:21 +03:00
parent 2d8f124461
commit 20140c7b8f

View file

@ -42,6 +42,7 @@ public partial class ImageEffectsForm : Form
public int SelectedPresetIndex { get; private set; }
private bool ignorePresetsSelectedIndexChanged = false;
private bool pauseUpdate = false;
public ImageEffectsForm(Image img, List<ImageEffectPreset> presets, int selectedPresetIndex)
{
@ -165,31 +166,33 @@ private void AddPreset(ImageEffectPreset preset)
cbPresets.SelectedIndex = cbPresets.Items.Count - 1;
LoadPreset(preset);
txtPresetName.Focus();
UpdatePreview();
}
}
private void UpdatePreview()
{
ImageEffectPreset preset = GetSelectedPreset();
if (preset != null && DefaultImage != null)
if (!pauseUpdate)
{
Stopwatch timer = Stopwatch.StartNew();
ImageEffectPreset preset = GetSelectedPreset();
using (Image preview = ApplyEffects())
if (preset != null && DefaultImage != null)
{
if (preview != null)
Stopwatch timer = Stopwatch.StartNew();
using (Image preview = ApplyEffects())
{
pbResult.LoadImage(preview);
Text = string.Format("ShareX - " + Resources.ImageEffectsForm_UpdatePreview_Image_effects___Width___0___Height___1___Render_time___2__ms,
preview.Width, preview.Height, timer.ElapsedMilliseconds);
}
else
{
pbResult.Reset();
Text = string.Format("ShareX - " + Resources.ImageEffectsForm_UpdatePreview_Image_effects___Width___0___Height___1___Render_time___2__ms,
0, 0, timer.ElapsedMilliseconds);
if (preview != null)
{
pbResult.LoadImage(preview);
Text = string.Format("ShareX - " + Resources.ImageEffectsForm_UpdatePreview_Image_effects___Width___0___Height___1___Render_time___2__ms,
preview.Width, preview.Height, timer.ElapsedMilliseconds);
}
else
{
pbResult.Reset();
Text = string.Format("ShareX - " + Resources.ImageEffectsForm_UpdatePreview_Image_effects___Width___0___Height___1___Render_time___2__ms,
0, 0, timer.ElapsedMilliseconds);
}
}
}
}
@ -224,6 +227,7 @@ private void tsmiEffectClick(object sender, EventArgs e)
{
Type type = (Type)tsmi.Tag;
ImageEffect imageEffect = (ImageEffect)Activator.CreateInstance(type);
// TODO: Order
preset.Effects.Add(imageEffect);
AddEffect(imageEffect);
UpdatePreview();
@ -233,15 +237,19 @@ private void tsmiEffectClick(object sender, EventArgs e)
private void RemoveSelectedEffects()
{
if (lvEffects.SelectedItems.Count > 0)
{
// TODO
foreach (ListViewItem lvi in lvEffects.SelectedItems)
{
lvi.Remove();
}
ImageEffectPreset preset = GetSelectedPreset();
UpdatePreview();
if (preset != null)
{
int index = lvEffects.SelectedIndex;
if (index > -1)
{
preset.Effects.RemoveAt(index);
lvEffects.Items.RemoveAt(index);
UpdatePreview();
}
}
}
@ -273,16 +281,25 @@ private void AddEffect(ImageEffect imageEffect)
private void LoadPreset(ImageEffectPreset preset)
{
txtPresetName.Text = preset.Name;
lvEffects.Items.Clear();
pgSettings.SelectedObject = null;
foreach (ImageEffect imageEffect in preset.Effects)
try
{
AddEffect(imageEffect);
pauseUpdate = true;
txtPresetName.Text = preset.Name;
lvEffects.Items.Clear();
pgSettings.SelectedObject = null;
foreach (ImageEffect imageEffect in preset.Effects)
{
AddEffect(imageEffect);
}
}
finally
{
pauseUpdate = false;
}
UpdatePreview();
}
#region Form events
@ -385,6 +402,7 @@ private void btnDuplicate_Click(object sender, EventArgs e)
private void lvEffects_ItemMoved(object sender, int oldIndex, int newIndex)
{
// TODO: Order
UpdatePreview();
}