116 lines
4.5 KiB
C#
116 lines
4.5 KiB
C#
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",
|
|
NetworkLogoEnum.Id => "ID.svg",
|
|
_ => throw new ArgumentOutOfRangeException(nameof(logo), logo, null)
|
|
};
|
|
}
|
|
} |