Files
PdfPig/src/UglyToad.Pdf/Util/Bootstrapper.cs
2017-12-02 19:08:38 +00:00

81 lines
3.2 KiB
C#

namespace UglyToad.Pdf.Util
{
using Filters;
using Fonts.Parser;
using Graphics;
using Logging;
using Parser;
using Parser.PageTree;
using Parser.Parts;
using Parser.Parts.CrossReference;
internal static class Bootstrapper
{
private static IContainer _testContainer;
internal static void SetTestContainer(IContainer container)
{
_testContainer = container;
}
public static IContainer GenerateContainer(ILog logger)
{
if (_testContainer != null)
{
return _testContainer;
}
if (logger == null)
{
logger = new NoOpLog();
}
var headerParser = new FileHeaderParser(logger);
var trailerParser = new FileTrailerParser();
var nameParser = new CosNameParser();
var dictionaryParser = new CosDictionaryParser(nameParser, logger);
var baseParser = new CosBaseParser(nameParser, new CosStringParser(), dictionaryParser, new CosArrayParser());
var streamParser = new CosStreamParser(logger);
var filterProvider = new MemoryFilterProvider(new DecodeParameterResolver(logger), new PngPredictor(), logger);
var crossReferenceParser = new CrossReferenceStreamParser(filterProvider);
var objectStreamParser = new ObjectStreamParser(logger, filterProvider, baseParser);
var dynamicParser = new DynamicParser(logger, baseParser, streamParser, objectStreamParser);
var crossReferenceTableParser = new FileCrossReferenceTableParser(logger, dictionaryParser, baseParser, streamParser, crossReferenceParser,
new CrossReferenceTableParser(logger, dictionaryParser, baseParser));
var resourceDictionaryParser = new ResourceDictionaryParser();
var pageParser = new PageParser();
var simpleFontParser = new SimpleFontParser();
var compositeFontParser = new CompositeFontParser();
var fontParser = new FontParser();
var pageContentParser = new PageContentParser();
var operationFactory = new ReflectionGraphicsStateOperationFactory();
var cmapParser = new CMapParser();
var container = new Container();
container.Register(headerParser);
container.Register(trailerParser);
container.Register(nameParser);
container.Register(dictionaryParser);
container.Register(baseParser);
container.Register(streamParser);
container.Register(crossReferenceParser);
container.Register(crossReferenceTableParser);
container.Register(dynamicParser);
container.Register(objectStreamParser);
container.Register(filterProvider);
container.Register(resourceDictionaryParser);
container.Register(pageParser);
container.Register(simpleFontParser);
container.Register(compositeFontParser);
container.Register(fontParser);
container.Register(pageContentParser);
container.Register(operationFactory);
container.Register(cmapParser);
return container;
}
}
}