Initial commit
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
using ImageMagick;
|
||||
using PosterMaker.Interfaces.Services;
|
||||
using PosterMaker.Models.Enums;
|
||||
|
||||
namespace PosterMaker.Services;
|
||||
|
||||
public class MovieLogoService : IMovieLogoService
|
||||
{
|
||||
private static readonly string LogoDir = Path.Combine("Resources", "Logos");
|
||||
private static readonly string StudioDir = Path.Combine(LogoDir, "Studio");
|
||||
private static readonly string NetworkDir = Path.Combine(LogoDir, "Network");
|
||||
|
||||
public byte[]? GetMovieLogo(MovieLogoEnum? logo)
|
||||
{
|
||||
if (logo == null) return null;
|
||||
var logoPath = Path.Combine(StudioDir, GetFileForLogo(logo));
|
||||
return File.ReadAllBytes(logoPath);;
|
||||
}
|
||||
|
||||
public byte[]? GetNetworkLogo(NetworkLogoEnum? logo)
|
||||
{
|
||||
if (logo == null) return null;
|
||||
var logoPath = Path.Combine(NetworkDir, GetFileForNetworkLogo(logo));
|
||||
return File.ReadAllBytes(logoPath);
|
||||
}
|
||||
|
||||
public Gravity GetLogoGravity(MovieLogoEnum? imagePropertiesLogo)
|
||||
{
|
||||
return imagePropertiesLogo switch
|
||||
{
|
||||
MovieLogoEnum.Disney => Gravity.North,
|
||||
MovieLogoEnum.DC => Gravity.North,
|
||||
MovieLogoEnum.SonyPicturesAnimation => Gravity.North,
|
||||
MovieLogoEnum.MarvelStudios => Gravity.North,
|
||||
MovieLogoEnum.A24 => Gravity.Northwest,
|
||||
MovieLogoEnum.Dreamworks => Gravity.North,
|
||||
MovieLogoEnum.DisneyPixar => Gravity.North,
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(imagePropertiesLogo), imagePropertiesLogo, null)
|
||||
};
|
||||
}
|
||||
|
||||
public MagickGeometry GetLogoGeometry(MovieLogoEnum? logoEnum)
|
||||
{
|
||||
var defaultGeometry = new MagickGeometry(200, 100);
|
||||
return logoEnum switch
|
||||
{
|
||||
MovieLogoEnum.Disney => defaultGeometry,
|
||||
MovieLogoEnum.DC => defaultGeometry,
|
||||
MovieLogoEnum.SonyPicturesAnimation => defaultGeometry,
|
||||
MovieLogoEnum.MarvelStudios => defaultGeometry,
|
||||
MovieLogoEnum.A24 => defaultGeometry,
|
||||
MovieLogoEnum.Dreamworks => defaultGeometry,
|
||||
MovieLogoEnum.DisneyPixar => new MagickGeometry(520, 100),
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(logoEnum), logoEnum, null)
|
||||
};
|
||||
}
|
||||
|
||||
public int GetNetworkLogoHeight(NetworkLogoEnum? logo)
|
||||
{
|
||||
return logo switch
|
||||
{
|
||||
NetworkLogoEnum.Hulu => 150,
|
||||
NetworkLogoEnum.Netflix => 200,
|
||||
NetworkLogoEnum.ParamountPlus => 200,
|
||||
_ => 150
|
||||
};
|
||||
}
|
||||
|
||||
private string GetFileForLogo(MovieLogoEnum? logo)
|
||||
{
|
||||
return logo switch
|
||||
{
|
||||
MovieLogoEnum.Disney => "Disney.svg",
|
||||
MovieLogoEnum.DC => "DC.svg",
|
||||
MovieLogoEnum.SonyPicturesAnimation => "Sony_Pictures_Animation.svg",
|
||||
MovieLogoEnum.MarvelStudios => "Marvel_Studios.svg",
|
||||
MovieLogoEnum.A24 => "A24.svg",
|
||||
MovieLogoEnum.Dreamworks => "Dreamworks.svg",
|
||||
MovieLogoEnum.DisneyPixar => "DisneyPixar.svg",
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(logo), logo, null)
|
||||
};
|
||||
}
|
||||
|
||||
private string GetFileForNetworkLogo(NetworkLogoEnum? logo)
|
||||
{
|
||||
return logo switch
|
||||
{
|
||||
NetworkLogoEnum.Netflix => "Netflix.svg",
|
||||
NetworkLogoEnum.DisneyPlus => "DisneyPlus.svg",
|
||||
NetworkLogoEnum.AppleTv => "AppleTv.png",
|
||||
NetworkLogoEnum.Hbo => "HBO.svg",
|
||||
NetworkLogoEnum.Fxx => "FXX.svg",
|
||||
NetworkLogoEnum.Cbs => "CBS.svg",
|
||||
NetworkLogoEnum.Peacock => "Peacock.svg",
|
||||
NetworkLogoEnum.AmazonPrimeVideo => "AmazonPrimeVideo.png",
|
||||
NetworkLogoEnum.Nbc => "NBC.svg",
|
||||
NetworkLogoEnum.Amc => "AMC.svg",
|
||||
NetworkLogoEnum.Starz => "Starz.svg",
|
||||
NetworkLogoEnum.Hulu => "Hulu.svg",
|
||||
NetworkLogoEnum.Cw => "CW.svg",
|
||||
NetworkLogoEnum.ParamountPlus => "ParamountPlus.svg",
|
||||
NetworkLogoEnum.ComedyCentral => "ComedyCentral.svg",
|
||||
NetworkLogoEnum.Abc => "ABC.svg",
|
||||
NetworkLogoEnum.Bbc => "BBC.svg",
|
||||
NetworkLogoEnum.Usa => "USA.svg",
|
||||
NetworkLogoEnum.Tbs => "TBS.svg",
|
||||
NetworkLogoEnum.Fx => "FX.svg",
|
||||
NetworkLogoEnum.AdultSwim => "AdultSwim.svg",
|
||||
NetworkLogoEnum.Max => "Max.svg",
|
||||
NetworkLogoEnum.Mtv => "MTV.svg",
|
||||
NetworkLogoEnum.ChannelFour => "ChannelFour.png",
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(logo), logo, null)
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user