Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
Layout2DXmlToImageConverter.cs
1using SkiaSharp;
2using System.IO;
3using System.Threading.Tasks;
7using Waher.Script;
8
10{
15 {
20 {
21 }
22
27
31 public virtual string[] ToContentTypes => ImageCodec.ImageContentTypes;
32
36 public virtual Grade ConversionGrade => Grade.Barely;
37
43 public async Task<bool> ConvertAsync(ConversionState State)
44 {
45 string Xml;
46
47 using (StreamReader rd = new StreamReader(State.From))
48 {
49 Xml = rd.ReadToEnd();
50 }
51
52 string s = State.ToContentType;
53 int i;
54
55 i = s.IndexOf(';');
56 if (i > 0)
57 s = s.Substring(0, i);
58
59 string Extension;
60 SKEncodedImageFormat Format;
61 int Quality = 100;
62
63 switch (s.ToLower())
64 {
66 Format = SKEncodedImageFormat.Png;
67 Extension = ImageCodec.FileExtensionPng;
68 break;
69
71 Format = SKEncodedImageFormat.Bmp;
72 Extension = ImageCodec.FileExtensionBmp;
73 break;
74
76 Format = SKEncodedImageFormat.Gif;
77 Extension = ImageCodec.FileExtensionGif;
78 break;
79
81 Format = SKEncodedImageFormat.Jpeg;
82 Extension = ImageCodec.FileExtensionJpg;
83 Quality = 90;
84 break;
85
87 Format = SKEncodedImageFormat.Webp;
88 Extension = ImageCodec.FileExtensionWebP;
89 break;
90
92 Format = SKEncodedImageFormat.Ico;
93 Extension = ImageCodec.FileExtensionIcon;
94 break;
95
100 default:
101 Format = XmlLayout.DefaultFormat;
102 Extension = XmlLayout.DefaultFileExtension;
103 State.ToContentType = XmlLayout.DefaultContentType;
104 break;
105 }
106
108 GraphInfo Graph = await XmlLayout.GetFileName("layout", Xml, Variables, Format, Quality, Extension);
109
110 if (Graph.Dynamic)
111 {
112 await State.To.WriteAsync(Graph.DynamicContent, 0, Graph.DynamicContent.Length);
113 return true;
114 }
115 else
116 {
117 byte[] Data = await Resources.ReadAllBytesAsync(Graph.FileName);
118
119 await State.To.WriteAsync(Data, 0, Data.Length);
120
121 return false;
122 }
123 }
124 }
125}
Contains the state of a content conversion process.
string ToContentType
Content type of the content to convert to. This value might be changed, in case the converter finds a...
Stream To
Stream pointing to where binary representation of content is to be sent.
Stream From
Stream pointing to binary representation of content.
Image encoder/decoder.
Definition: ImageCodec.cs:14
const string FileExtensionJpg
jpg
Definition: ImageCodec.cs:90
const string ContentTypeJpg
image/jpeg
Definition: ImageCodec.cs:35
const string ContentTypeIcon
image/x-icon
Definition: ImageCodec.cs:40
const string ContentTypeWebP
image/webp
Definition: ImageCodec.cs:25
const string ContentTypeEmf
image/x-emf
Definition: ImageCodec.cs:70
const string ContentTypeGif
image/gif
Definition: ImageCodec.cs:55
const string FileExtensionPng
png
Definition: ImageCodec.cs:75
const string FileExtensionWebP
webp
Definition: ImageCodec.cs:95
const string FileExtensionIcon
ico
Definition: ImageCodec.cs:115
const string ContentTypePng
image/png
Definition: ImageCodec.cs:30
const string ContentTypeBmp
image/bmp
Definition: ImageCodec.cs:50
const string ContentTypeTiff
image/tiff
Definition: ImageCodec.cs:60
const string ContentTypeWmf
image/x-wmf
Definition: ImageCodec.cs:65
const string ContentTypeSvg
image/svg+xml
Definition: ImageCodec.cs:45
const string FileExtensionGif
gif
Definition: ImageCodec.cs:85
const string FileExtensionBmp
bmp
Definition: ImageCodec.cs:80
static readonly string[] ImageContentTypes
Image content types.
Definition: ImageCodec.cs:126
async Task< bool > ConvertAsync(ConversionState State)
Performs the actual conversion.
string[] FromContentTypes
Converts content from these content types.
virtual Grade ConversionGrade
How well the content is converted.
virtual string[] ToContentTypes
Converts content to these content types.
Class managing 2D XML Layout integration into Markdown documents.
Definition: XmlLayout.cs:41
Static class managing loading of resources stored as embedded resources or in content files.
Definition: Resources.cs:15
static async Task< byte[]> ReadAllBytesAsync(string FileName)
Reads a binary file asynchronously.
Definition: Resources.cs:183
XML encoder/decoder.
Definition: XmlCodec.cs:16
static readonly string[] XmlContentTypes
XML content types.
Definition: XmlCodec.cs:37
Collection of variables.
Definition: Variables.cs:25
Basic interface for Internet Content encoders. A class implementing this interface and having a defau...
Grade
Grade enumeration
Definition: Grade.cs:7