Skip to content

Commit 087095e

Browse files
committed
拆分具体渲染逻辑
1 parent 1215e4b commit 087095e

2 files changed

Lines changed: 59 additions & 33 deletions

File tree

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
using System.Diagnostics.CodeAnalysis;
2+
using System.Text;
3+
using Oxage.Wmf;
4+
using SkiaSharp;
5+
6+
namespace SkiaWmfRenderer;
7+
8+
class WmfRenderer
9+
{
10+
public required WmfDocument WmfDocument { get; init; }
11+
public required int RequestWidth { get; init; }
12+
public required int RequestHeight { get; init; }
13+
14+
public bool TryRender([NotNullWhen(true)] out SKBitmap? skBitmap)
15+
{
16+
skBitmap = null;
17+
18+
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
19+
20+
var format = WmfDocument.Format;
21+
22+
var x = Math.Min(format.Left, format.Right);
23+
var y = Math.Min(format.Top, format.Bottom);
24+
25+
var width = Math.Abs(format.Right - format.Left);
26+
var height = Math.Abs(format.Bottom - format.Top);
27+
28+
skBitmap = new SKBitmap(width, height, SKColorType.Bgra8888, SKAlphaType.Premul);
29+
30+
using SKCanvas canvas = new SKCanvas(skBitmap);
31+
32+
try
33+
{
34+
var result = TryRenderInner(canvas);
35+
36+
if (result)
37+
{
38+
return true;
39+
}
40+
else
41+
{
42+
skBitmap.Dispose();
43+
return false;
44+
}
45+
}
46+
catch (Exception e)
47+
{
48+
skBitmap.Dispose();
49+
return false;
50+
}
51+
}
52+
53+
private bool TryRenderInner(SKCanvas canvas)
54+
{
55+
return true;
56+
}
57+
}

Workbench/Wmf/SkiaWmfRenderer/src/SkiaWmfRenderer/SkiaWmfRenderHelper.cs

Lines changed: 2 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,8 @@
1-
using Oxage.Wmf;
1+
using System.Diagnostics.CodeAnalysis;
2+
using Oxage.Wmf;
23

34
using SkiaSharp;
45

5-
using System;
6-
using System.Collections.Generic;
7-
using System.Diagnostics.CodeAnalysis;
8-
using System.Linq;
9-
using System.Text;
10-
using System.Threading.Tasks;
11-
using System.Xml;
12-
136
namespace SkiaWmfRenderer;
147

158
public static class SkiaWmfRenderHelper
@@ -51,28 +44,4 @@ public static bool TryRender(FileInfo wmfFile, int requestWidth, int requestHeig
5144

5245
return wmfRenderer.TryRender(out skBitmap);
5346
}
54-
}
55-
56-
class WmfRenderer
57-
{
58-
public required WmfDocument WmfDocument { get; init; }
59-
public required int RequestWidth { get; init; }
60-
public required int RequestHeight { get; init; }
61-
62-
public bool TryRender([NotNullWhen(true)] out SKBitmap? skBitmap)
63-
{
64-
skBitmap = null;
65-
66-
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
67-
68-
var format = WmfDocument.Format;
69-
70-
var x = Math.Min(format.Left, format.Right);
71-
var y = Math.Min(format.Top, format.Bottom);
72-
73-
var width = Math.Abs(format.Right - format.Left);
74-
var height = Math.Abs(format.Bottom - format.Top);
75-
76-
return skBitmap == null;
77-
}
7847
}

0 commit comments

Comments
 (0)