Fake camera implemented to run it without real camera
@ -5,6 +5,10 @@ using CamBooth.App.Core.Logging;
|
||||
using CamBooth.App.Features.Camera;
|
||||
using CamBooth.App.Features.PictureGallery;
|
||||
|
||||
using EDSDKLib.API.Base;
|
||||
|
||||
using EOSDigital.API;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace CamBooth.App;
|
||||
@ -38,5 +42,14 @@ public partial class App : Application
|
||||
services.AddSingleton<AppSettingsService>();
|
||||
services.AddSingleton<PictureGalleryService>();
|
||||
services.AddSingleton<CameraService>();
|
||||
#if DEBUG
|
||||
services.AddSingleton<ICanonAPI, CanonAPIMock>();
|
||||
services.AddSingleton<ICamera, CameraMock>();
|
||||
#else
|
||||
services.AddSingleton<ICanonAPI, CanonAPI>();
|
||||
services.AddSingleton<ICamera, Camera>();
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@ -18,13 +18,13 @@ public class CameraService : IDisposable
|
||||
|
||||
private readonly PictureGalleryService _pictureGalleryService;
|
||||
|
||||
private readonly CanonAPI APIHandler;
|
||||
private readonly ICanonAPI _APIHandler;
|
||||
|
||||
private CameraValue[] AvList;
|
||||
|
||||
private int BulbTime = 30;
|
||||
|
||||
private List<EOSDigital.API.Camera> CamList;
|
||||
private List<ICamera> CamList;
|
||||
|
||||
private int ErrCount;
|
||||
|
||||
@ -34,19 +34,24 @@ public class CameraService : IDisposable
|
||||
|
||||
private CameraValue[] ISOList;
|
||||
|
||||
public EOSDigital.API.Camera MainCamera;
|
||||
public ICamera _mainCamera;
|
||||
|
||||
private CameraValue[] TvList;
|
||||
|
||||
|
||||
public CameraService(Logger logger, AppSettingsService appSettings, PictureGalleryService pictureGalleryService)
|
||||
public CameraService(Logger logger,
|
||||
AppSettingsService appSettings,
|
||||
PictureGalleryService pictureGalleryService,
|
||||
ICamera mainCamera,
|
||||
ICanonAPI APIHandler)
|
||||
{
|
||||
this._logger = logger;
|
||||
this._appSettings = appSettings;
|
||||
this._pictureGalleryService = pictureGalleryService;
|
||||
this._mainCamera = mainCamera;
|
||||
this._APIHandler = APIHandler;
|
||||
try
|
||||
{
|
||||
this.APIHandler = new CanonAPI();
|
||||
this.IsInit = true;
|
||||
}
|
||||
catch (DllNotFoundException)
|
||||
@ -65,8 +70,8 @@ public class CameraService : IDisposable
|
||||
{
|
||||
this.CloseSession();
|
||||
this.IsInit = false;
|
||||
this.APIHandler.Dispose();
|
||||
this.MainCamera.Dispose();
|
||||
this._APIHandler.Dispose();
|
||||
this._mainCamera.Dispose();
|
||||
}
|
||||
|
||||
|
||||
@ -76,7 +81,7 @@ public class CameraService : IDisposable
|
||||
ErrorHandler.NonSevereErrorHappened += this.ErrorHandler_NonSevereErrorHappened;
|
||||
|
||||
this.RefreshCamera();
|
||||
List<EOSDigital.API.Camera> cameraList = this.APIHandler.GetCameraList();
|
||||
List<ICamera> cameraList = this._APIHandler.GetCameraList();
|
||||
if (cameraList.Any())
|
||||
{
|
||||
this.OpenSession();
|
||||
@ -91,14 +96,14 @@ public class CameraService : IDisposable
|
||||
|
||||
private void SetSettingSaveToComputer()
|
||||
{
|
||||
this.MainCamera.SetSetting(PropertyID.SaveTo, (int)SaveTo.Host);
|
||||
this.MainCamera.SetCapacity(4096, int.MaxValue);
|
||||
this._mainCamera.SetSetting(PropertyID.SaveTo, (int)SaveTo.Host);
|
||||
this._mainCamera.SetCapacity(4096, int.MaxValue);
|
||||
}
|
||||
|
||||
|
||||
public void CloseSession()
|
||||
{
|
||||
this.MainCamera.CloseSession();
|
||||
this._mainCamera.CloseSession();
|
||||
|
||||
// AvCoBox.Items.Clear();
|
||||
// TvCoBox.Items.Clear();
|
||||
@ -114,34 +119,34 @@ public class CameraService : IDisposable
|
||||
private void RefreshCamera()
|
||||
{
|
||||
// CameraListBox.Items.Clear();
|
||||
this.CamList = this.APIHandler.GetCameraList();
|
||||
this.CamList = this._APIHandler.GetCameraList();
|
||||
|
||||
// foreach (Camera cam in CamList) CameraListBox.Items.Add(cam.DeviceName);
|
||||
// if (MainCamera?.SessionOpen == true) CameraListBox.SelectedIndex = CamList.FindIndex(t => t.ID == MainCamera.ID);
|
||||
// if (_mainCamera?.SessionOpen == true) CameraListBox.SelectedIndex = CamList.FindIndex(t => t.ID == _mainCamera.ID);
|
||||
// else if (CamList.Count > 0) CameraListBox.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
|
||||
private void OpenSession()
|
||||
{
|
||||
this.MainCamera = this.CamList[0];
|
||||
this.MainCamera.OpenSession();
|
||||
this._mainCamera = this.CamList[0];
|
||||
this._mainCamera.OpenSession();
|
||||
|
||||
//MainCamera.ProgressChanged += MainCamera_ProgressChanged;
|
||||
this.MainCamera.StateChanged += this.MainCamera_StateChanged;
|
||||
this.MainCamera.DownloadReady += this.MainCamera_DownloadReady;
|
||||
//_mainCamera.ProgressChanged += MainCamera_ProgressChanged;
|
||||
this._mainCamera.StateChanged += this.MainCamera_StateChanged;
|
||||
this._mainCamera.DownloadReady += this.MainCamera_DownloadReady;
|
||||
|
||||
//SessionLabel.Content = MainCamera.DeviceName;
|
||||
this.AvList = this.MainCamera.GetSettingsList(PropertyID.Av);
|
||||
this.TvList = this.MainCamera.GetSettingsList(PropertyID.Tv);
|
||||
this.ISOList = this.MainCamera.GetSettingsList(PropertyID.ISO);
|
||||
//SessionLabel.Content = _mainCamera.DeviceName;
|
||||
this.AvList = this._mainCamera.GetSettingsList(PropertyID.Av);
|
||||
this.TvList = this._mainCamera.GetSettingsList(PropertyID.Tv);
|
||||
this.ISOList = this._mainCamera.GetSettingsList(PropertyID.ISO);
|
||||
|
||||
// foreach (var Av in AvList) AvCoBox.Items.Add(Av.StringValue);
|
||||
// foreach (var Tv in TvList) TvCoBox.Items.Add(Tv.StringValue);
|
||||
// foreach (var ISO in ISOList) ISOCoBox.Items.Add(ISO.StringValue);
|
||||
// AvCoBox.SelectedIndex = AvCoBox.Items.IndexOf(AvValues.GetValue(MainCamera.GetInt32Setting(PropertyID.Av)).StringValue);
|
||||
// TvCoBox.SelectedIndex = TvCoBox.Items.IndexOf(TvValues.GetValue(MainCamera.GetInt32Setting(PropertyID.Tv)).StringValue);
|
||||
// ISOCoBox.SelectedIndex = ISOCoBox.Items.IndexOf(ISOValues.GetValue(MainCamera.GetInt32Setting(PropertyID.ISO)).StringValue);
|
||||
// AvCoBox.SelectedIndex = AvCoBox.Items.IndexOf(AvValues.GetValue(_mainCamera.GetInt32Setting(PropertyID.Av)).StringValue);
|
||||
// TvCoBox.SelectedIndex = TvCoBox.Items.IndexOf(TvValues.GetValue(_mainCamera.GetInt32Setting(PropertyID.Tv)).StringValue);
|
||||
// ISOCoBox.SelectedIndex = ISOCoBox.Items.IndexOf(ISOValues.GetValue(_mainCamera.GetInt32Setting(PropertyID.ISO)).StringValue);
|
||||
// SettingsGroupBox.IsEnabled = true;
|
||||
// LiveViewGroupBox.IsEnabled = true;
|
||||
}
|
||||
@ -157,13 +162,13 @@ public class CameraService : IDisposable
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!this.MainCamera.IsLiveViewOn)
|
||||
if (!this._mainCamera.IsLiveViewOn)
|
||||
{
|
||||
this.MainCamera.StartLiveView();
|
||||
this._mainCamera.StartLiveView();
|
||||
}
|
||||
else
|
||||
{
|
||||
this.MainCamera.StopLiveView();
|
||||
this._mainCamera.StopLiveView();
|
||||
|
||||
//LVCanvas.Background = Brushes.LightGray;
|
||||
}
|
||||
@ -179,7 +184,7 @@ public class CameraService : IDisposable
|
||||
{
|
||||
try
|
||||
{
|
||||
this.MainCamera.TakePhoto();
|
||||
this._mainCamera.TakePhoto();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -256,15 +261,14 @@ public class CameraService : IDisposable
|
||||
// }
|
||||
|
||||
|
||||
private void MainCamera_DownloadReady(EOSDigital.API.Camera sender, DownloadInfo Info)
|
||||
private void MainCamera_DownloadReady(ICamera sender, IDownloadInfo Info)
|
||||
{
|
||||
this._logger.Info("MainCamera_DownloadReady called");
|
||||
try
|
||||
{
|
||||
string dir = this._appSettings.PictureLocation;
|
||||
Info.FileName = $"img_{Guid.NewGuid().ToString()}.jpg";
|
||||
sender.DownloadFile(Info, dir);
|
||||
this._logger.Info("Download complete: " + Path.Combine(dir, Info.FileName));
|
||||
sender.DownloadFile(Info, this._appSettings.PictureLocation);
|
||||
this._logger.Info("Download complete: " + Path.Combine(this._appSettings.PictureLocation, Info.FileName));
|
||||
Application.Current.Dispatcher.Invoke(() => { this._pictureGalleryService.LoadThumbnailsToCache(); });
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@ -8,6 +8,8 @@ using CamBooth.App.Core.AppSettings;
|
||||
using CamBooth.App.Core.Logging;
|
||||
using CamBooth.App.Features.Camera;
|
||||
|
||||
using EOSDigital.API;
|
||||
|
||||
namespace CamBooth.App.Features.LiveView;
|
||||
|
||||
public partial class LiveViewPage : Page
|
||||
@ -32,25 +34,23 @@ public partial class LiveViewPage : Page
|
||||
this.SetImageAction = img => { this.bgbrush.ImageSource = img; };
|
||||
this.LVCanvas.Background = this.bgbrush;
|
||||
cameraService.ConnectCamera();
|
||||
cameraService.MainCamera.LiveViewUpdated += this.MainCamera_OnLiveViewUpdated;
|
||||
cameraService._mainCamera.LiveViewUpdated += this.MainCamera_OnLiveViewUpdated;
|
||||
}
|
||||
|
||||
|
||||
private void MainCamera_OnLiveViewUpdated(EOSDigital.API.Camera sender, Stream img)
|
||||
private void MainCamera_OnLiveViewUpdated(ICamera sender, Stream img)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (WrapStream s = new(img))
|
||||
{
|
||||
img.Position = 0;
|
||||
BitmapImage EvfImage = new();
|
||||
EvfImage.BeginInit();
|
||||
EvfImage.StreamSource = s;
|
||||
EvfImage.CacheOption = BitmapCacheOption.OnLoad;
|
||||
EvfImage.EndInit();
|
||||
EvfImage.Freeze();
|
||||
Application.Current.Dispatcher.BeginInvoke(this.SetImageAction, EvfImage);
|
||||
}
|
||||
using WrapStream s = new(img);
|
||||
img.Position = 0;
|
||||
BitmapImage EvfImage = new();
|
||||
EvfImage.BeginInit();
|
||||
EvfImage.StreamSource = s;
|
||||
EvfImage.CacheOption = BitmapCacheOption.OnLoad;
|
||||
EvfImage.EndInit();
|
||||
EvfImage.Freeze();
|
||||
Application.Current.Dispatcher.BeginInvoke(this.SetImageAction, EvfImage);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@ -59,7 +59,7 @@ public partial class MainWindow : Window
|
||||
catch (Exception exception)
|
||||
{
|
||||
//TODO: mit content dialog ersetzen
|
||||
System.Windows.MessageBox.Show("Sorry, da ging was schief!");
|
||||
System.Windows.MessageBox.Show("Sorry, da ging was schief! Bitte nochmal probieren.");
|
||||
this._logger.Info(exception.Message);
|
||||
}
|
||||
finally
|
||||
@ -122,7 +122,11 @@ public partial class MainWindow : Window
|
||||
{
|
||||
try
|
||||
{
|
||||
#if DEBUG
|
||||
TimerControlRectangleAnimation.StartTimer(1);
|
||||
#else
|
||||
TimerControlRectangleAnimation.StartTimer(5);
|
||||
#endif
|
||||
SwitchButtonAndTimerPanel();
|
||||
}
|
||||
catch (Exception exception)
|
||||
|
||||
@ -12,6 +12,13 @@
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AEventRoute_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FUsers_003Ftobia_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F4bda76b5cc453e1edf5d5c754c4a8215edbd3d3e4f80706dcf4f52a4f68979_003FEventRoute_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AExceptionDispatchInfo_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FUsers_003Ftobia_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F793c644a163b4a9992123fa9cc1562efbf3908_003F4a_003Fd28af422_003FExceptionDispatchInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AExceptionDispatchInfo_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FUsers_003Ftobia_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fbd1d5c50194fea68ff3559c160230b0ab50f5acf4ce3061bffd6d62958e2182_003FExceptionDispatchInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AExecutionContext_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FUsers_003Ftobia_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F1715f899dd6e4344b571806281c3955fbf38a0_003F93_003F16e712b7_003FExecutionContext_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIntPtr_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FUsers_003Ftobia_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fb18a8b3398e74bca86895881dd02956c573648_003F7a_003F52dc840d_003FIntPtr_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATimerElapsedEventArgs_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FUsers_003Ftobia_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F84fc76ffb0d44a0784938f79e15bb37217928_003F20_003Fb02e4ce4_003FTimerElapsedEventArgs_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AWindow_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FUsers_003Ftobia_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F29144f8ea0074c8f96e495ebaf88a2cce798a0_003Fa3_003Fddb8103c_003FWindow_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AWindow_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FUsers_003Ftobia_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F0713c794b56e4feca091d5981a6f5967f60930_003Fc8_003F61b7e802_003FWindow_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AWindow_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FUsers_003Ftobia_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fd0db11e55b76dc7f234163f6cee32b297b8ddb591fb0b5cbad1b46ed17343e18_003FWindow_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AWindow_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FUsers_003Ftobia_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fd0db11e55b76dc7f234163f6cee32b297b8ddb591fb0b5cbad1b46ed17343e18_003FWindow_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/AnalysisEnabled/@EntryValue">SOLUTION</s:String>
|
||||
<s:String x:Key="/Default/Environment/AssemblyExplorer/XmlDocument/@EntryValue"><AssemblyExplorer>
|
||||
<Assembly Path="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8.1\System.Drawing.dll" />
|
||||
</AssemblyExplorer></s:String></wpf:ResourceDictionary>
|
||||
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-001.jpg
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-002.jpg
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-003.jpg
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-004.jpg
Normal file
|
After Width: | Height: | Size: 82 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-005.jpg
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-006.jpg
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-007.jpg
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-008.jpg
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-009.jpg
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-010.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-011.jpg
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-012.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-013.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-014.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-015.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-016.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-017.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-018.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-019.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-020.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-021.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-022.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-023.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-024.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-025.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-026.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-027.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-028.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-029.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-030.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-031.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-032.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-033.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-034.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-035.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-036.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-037.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-038.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-039.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-040.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-041.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-042.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-043.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-044.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-045.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-046.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-047.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-048.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-049.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-050.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-051.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-052.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-053.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-054.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-055.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-056.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-057.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-058.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-059.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-060.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-061.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-062.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-063.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-064.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-065.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-066.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-067.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-068.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-069.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-070.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-071.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-072.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-073.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-074.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-075.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-076.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-077.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-078.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-079.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-080.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-081.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-082.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-083.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-084.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-085.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-086.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-087.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-088.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-089.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-090.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-091.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-092.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-093.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-094.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
src/CamBooth/CameraMockFrames/ezgif-frame-095.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |