@@ -42,7 +42,9 @@ source product.
4242*/
4343using System ;
4444using System . Collections . Generic ;
45+ using iText . Commons . Utils ;
4546using iText . Svg ;
47+ using iText . Svg . Renderers ;
4648using iText . Svg . Renderers . Impl ;
4749
4850namespace iText . Svg . Renderers . Factories {
@@ -51,90 +53,117 @@ namespace iText.Svg.Renderers.Factories {
5153 /// tags as defined in the SVG Specification.
5254 /// </summary>
5355 internal class DefaultSvgNodeRendererMapper {
56+ private static readonly String CLIP_PATH_LC = SvgConstants . Tags . CLIP_PATH . ToLowerInvariant ( ) ;
57+
58+ private static readonly String LINEAR_GRADIENT_LC = SvgConstants . Tags . LINEAR_GRADIENT . ToLowerInvariant ( ) ;
59+
60+ private static readonly String TEXT_LEAF_LC = SvgConstants . Tags . TEXT_LEAF . ToLowerInvariant ( ) ;
61+
62+ /// <summary>
63+ /// Creates a new
64+ /// <see cref="DefaultSvgNodeRendererMapper"/>
65+ /// instance.
66+ /// </summary>
5467 internal DefaultSvgNodeRendererMapper ( ) {
5568 }
5669
57- internal virtual IDictionary < String , Type > GetMapping ( ) {
58- IDictionary < String , Type > result = new Dictionary < String , Type > ( ) ;
59- result . Put ( SvgConstants . Tags . CIRCLE , typeof ( CircleSvgNodeRenderer ) ) ;
60- result . Put ( SvgConstants . Tags . CLIP_PATH , typeof ( ClipPathSvgNodeRenderer ) ) ;
61- result . Put ( SvgConstants . Tags . DEFS , typeof ( DefsSvgNodeRenderer ) ) ;
62- result . Put ( SvgConstants . Tags . ELLIPSE , typeof ( EllipseSvgNodeRenderer ) ) ;
63- result . Put ( SvgConstants . Tags . G , typeof ( GroupSvgNodeRenderer ) ) ;
64- result . Put ( SvgConstants . Tags . IMAGE , typeof ( ImageSvgNodeRenderer ) ) ;
65- result . Put ( SvgConstants . Tags . LINE , typeof ( LineSvgNodeRenderer ) ) ;
66- result . Put ( SvgConstants . Tags . LINEAR_GRADIENT , typeof ( LinearGradientSvgNodeRenderer ) ) ;
67- result . Put ( SvgConstants . Tags . MARKER , typeof ( MarkerSvgNodeRenderer ) ) ;
68- result . Put ( SvgConstants . Tags . PATTERN , typeof ( PatternSvgNodeRenderer ) ) ;
69- result . Put ( SvgConstants . Tags . PATH , typeof ( PathSvgNodeRenderer ) ) ;
70- result . Put ( SvgConstants . Tags . POLYGON , typeof ( PolygonSvgNodeRenderer ) ) ;
71- result . Put ( SvgConstants . Tags . POLYLINE , typeof ( PolylineSvgNodeRenderer ) ) ;
72- result . Put ( SvgConstants . Tags . RECT , typeof ( RectangleSvgNodeRenderer ) ) ;
73- result . Put ( SvgConstants . Tags . STOP , typeof ( StopSvgNodeRenderer ) ) ;
74- result . Put ( SvgConstants . Tags . SVG , typeof ( SvgTagSvgNodeRenderer ) ) ;
75- result . Put ( SvgConstants . Tags . SYMBOL , typeof ( SymbolSvgNodeRenderer ) ) ;
76- result . Put ( SvgConstants . Tags . TEXT , typeof ( TextSvgBranchRenderer ) ) ;
77- result . Put ( SvgConstants . Tags . TSPAN , typeof ( TextSvgTSpanBranchRenderer ) ) ;
78- result . Put ( SvgConstants . Tags . USE , typeof ( UseSvgNodeRenderer ) ) ;
79- result . Put ( SvgConstants . Tags . TEXT_LEAF , typeof ( TextLeafSvgNodeRenderer ) ) ;
70+ private static readonly IDictionary < String , DefaultSvgNodeRendererMapper . ISvgNodeRendererCreator > mapping ;
71+
72+ private static readonly ICollection < String > ignored ;
73+
74+ static DefaultSvgNodeRendererMapper ( ) {
75+ IDictionary < String , DefaultSvgNodeRendererMapper . ISvgNodeRendererCreator > result = new Dictionary < String ,
76+ DefaultSvgNodeRendererMapper . ISvgNodeRendererCreator > ( ) ;
77+ result . Put ( SvgConstants . Tags . CIRCLE , ( ) => new CircleSvgNodeRenderer ( ) ) ;
78+ result . Put ( SvgConstants . Tags . CLIP_PATH , ( ) => new ClipPathSvgNodeRenderer ( ) ) ;
79+ result . Put ( SvgConstants . Tags . DEFS , ( ) => new DefsSvgNodeRenderer ( ) ) ;
80+ result . Put ( SvgConstants . Tags . ELLIPSE , ( ) => new EllipseSvgNodeRenderer ( ) ) ;
81+ result . Put ( SvgConstants . Tags . G , ( ) => new GroupSvgNodeRenderer ( ) ) ;
82+ result . Put ( SvgConstants . Tags . IMAGE , ( ) => new ImageSvgNodeRenderer ( ) ) ;
83+ result . Put ( SvgConstants . Tags . LINE , ( ) => new LineSvgNodeRenderer ( ) ) ;
84+ result . Put ( SvgConstants . Tags . LINEAR_GRADIENT , ( ) => new LinearGradientSvgNodeRenderer ( ) ) ;
85+ result . Put ( SvgConstants . Tags . MARKER , ( ) => new MarkerSvgNodeRenderer ( ) ) ;
86+ result . Put ( SvgConstants . Tags . PATTERN , ( ) => new PatternSvgNodeRenderer ( ) ) ;
87+ result . Put ( SvgConstants . Tags . PATH , ( ) => new PathSvgNodeRenderer ( ) ) ;
88+ result . Put ( SvgConstants . Tags . POLYGON , ( ) => new PolygonSvgNodeRenderer ( ) ) ;
89+ result . Put ( SvgConstants . Tags . POLYLINE , ( ) => new PolylineSvgNodeRenderer ( ) ) ;
90+ result . Put ( SvgConstants . Tags . RECT , ( ) => new RectangleSvgNodeRenderer ( ) ) ;
91+ result . Put ( SvgConstants . Tags . STOP , ( ) => new StopSvgNodeRenderer ( ) ) ;
92+ result . Put ( SvgConstants . Tags . SVG , ( ) => new SvgTagSvgNodeRenderer ( ) ) ;
93+ result . Put ( SvgConstants . Tags . SYMBOL , ( ) => new SymbolSvgNodeRenderer ( ) ) ;
94+ result . Put ( SvgConstants . Tags . TEXT , ( ) => new TextSvgBranchRenderer ( ) ) ;
95+ result . Put ( SvgConstants . Tags . TSPAN , ( ) => new TextSvgTSpanBranchRenderer ( ) ) ;
96+ result . Put ( SvgConstants . Tags . USE , ( ) => new UseSvgNodeRenderer ( ) ) ;
97+ result . Put ( SvgConstants . Tags . TEXT_LEAF , ( ) => new TextLeafSvgNodeRenderer ( ) ) ;
8098 // TODO: DEVSIX-3923 remove normalization (.toLowerCase)
81- result . Put ( SvgConstants . Tags . CLIP_PATH . ToLowerInvariant ( ) , typeof ( ClipPathSvgNodeRenderer ) ) ;
82- result . Put ( SvgConstants . Tags . LINEAR_GRADIENT . ToLowerInvariant ( ) , typeof ( LinearGradientSvgNodeRenderer ) ) ;
83- result . Put ( SvgConstants . Tags . TEXT_LEAF . ToLowerInvariant ( ) , typeof ( TextLeafSvgNodeRenderer ) ) ;
84- return result ;
99+ result . Put ( CLIP_PATH_LC , ( ) => new ClipPathSvgNodeRenderer ( ) ) ;
100+ result . Put ( LINEAR_GRADIENT_LC , ( ) => new LinearGradientSvgNodeRenderer ( ) ) ;
101+ result . Put ( TEXT_LEAF_LC , ( ) => new TextLeafSvgNodeRenderer ( ) ) ;
102+ mapping = JavaCollectionsUtil . UnmodifiableMap ( result ) ;
103+ // Not supported tags as of yet
104+ ICollection < String > ignoredTags = new HashSet < String > ( ) ;
105+ ignoredTags . Add ( SvgConstants . Tags . A ) ;
106+ ignoredTags . Add ( SvgConstants . Tags . ALT_GLYPH ) ;
107+ ignoredTags . Add ( SvgConstants . Tags . ALT_GLYPH_DEF ) ;
108+ ignoredTags . Add ( SvgConstants . Tags . ALT_GLYPH_ITEM ) ;
109+ ignoredTags . Add ( SvgConstants . Tags . COLOR_PROFILE ) ;
110+ ignoredTags . Add ( SvgConstants . Tags . DESC ) ;
111+ ignoredTags . Add ( SvgConstants . Tags . FE_BLEND ) ;
112+ ignoredTags . Add ( SvgConstants . Tags . FE_COLOR_MATRIX ) ;
113+ ignoredTags . Add ( SvgConstants . Tags . FE_COMPONENT_TRANSFER ) ;
114+ ignoredTags . Add ( SvgConstants . Tags . FE_COMPOSITE ) ;
115+ ignoredTags . Add ( SvgConstants . Tags . FE_COMVOLVE_MATRIX ) ;
116+ ignoredTags . Add ( SvgConstants . Tags . FE_DIFFUSE_LIGHTING ) ;
117+ ignoredTags . Add ( SvgConstants . Tags . FE_DISPLACEMENT_MAP ) ;
118+ ignoredTags . Add ( SvgConstants . Tags . FE_DISTANT_LIGHT ) ;
119+ ignoredTags . Add ( SvgConstants . Tags . FE_FLOOD ) ;
120+ ignoredTags . Add ( SvgConstants . Tags . FE_FUNC_A ) ;
121+ ignoredTags . Add ( SvgConstants . Tags . FE_FUNC_B ) ;
122+ ignoredTags . Add ( SvgConstants . Tags . FE_FUNC_G ) ;
123+ ignoredTags . Add ( SvgConstants . Tags . FE_FUNC_R ) ;
124+ ignoredTags . Add ( SvgConstants . Tags . FE_GAUSSIAN_BLUR ) ;
125+ ignoredTags . Add ( SvgConstants . Tags . FE_IMAGE ) ;
126+ ignoredTags . Add ( SvgConstants . Tags . FE_MERGE ) ;
127+ ignoredTags . Add ( SvgConstants . Tags . FE_MERGE_NODE ) ;
128+ ignoredTags . Add ( SvgConstants . Tags . FE_MORPHOLOGY ) ;
129+ ignoredTags . Add ( SvgConstants . Tags . FE_OFFSET ) ;
130+ ignoredTags . Add ( SvgConstants . Tags . FE_POINT_LIGHT ) ;
131+ ignoredTags . Add ( SvgConstants . Tags . FE_SPECULAR_LIGHTING ) ;
132+ ignoredTags . Add ( SvgConstants . Tags . FE_SPOTLIGHT ) ;
133+ ignoredTags . Add ( SvgConstants . Tags . FE_TILE ) ;
134+ ignoredTags . Add ( SvgConstants . Tags . FE_TURBULENCE ) ;
135+ ignoredTags . Add ( SvgConstants . Tags . FILTER ) ;
136+ ignoredTags . Add ( SvgConstants . Tags . FONT ) ;
137+ ignoredTags . Add ( SvgConstants . Tags . FONT_FACE ) ;
138+ ignoredTags . Add ( SvgConstants . Tags . FONT_FACE_FORMAT ) ;
139+ ignoredTags . Add ( SvgConstants . Tags . FONT_FACE_NAME ) ;
140+ ignoredTags . Add ( SvgConstants . Tags . FONT_FACE_SRC ) ;
141+ ignoredTags . Add ( SvgConstants . Tags . FONT_FACE_URI ) ;
142+ ignoredTags . Add ( SvgConstants . Tags . FOREIGN_OBJECT ) ;
143+ ignoredTags . Add ( SvgConstants . Tags . GLYPH ) ;
144+ ignoredTags . Add ( SvgConstants . Tags . GLYPH_REF ) ;
145+ ignoredTags . Add ( SvgConstants . Tags . HKERN ) ;
146+ ignoredTags . Add ( SvgConstants . Tags . MASK ) ;
147+ ignoredTags . Add ( SvgConstants . Tags . METADATA ) ;
148+ ignoredTags . Add ( SvgConstants . Tags . MISSING_GLYPH ) ;
149+ ignoredTags . Add ( SvgConstants . Tags . RADIAL_GRADIENT ) ;
150+ ignoredTags . Add ( SvgConstants . Tags . STYLE ) ;
151+ ignoredTags . Add ( SvgConstants . Tags . TITLE ) ;
152+ ignored = JavaCollectionsUtil . UnmodifiableCollection ( ignoredTags ) ;
153+ }
154+
155+ /// <summary>Gets the default SVG tags mapping.</summary>
156+ /// <returns>the default SVG tags mapping</returns>
157+ internal virtual IDictionary < String , DefaultSvgNodeRendererMapper . ISvgNodeRendererCreator > GetMapping ( ) {
158+ return mapping ;
85159 }
86160
161+ /// <summary>Gets the default ignored SVG tags.</summary>
162+ /// <returns>default ignored SVG tags</returns>
87163 internal virtual ICollection < String > GetIgnoredTags ( ) {
88- ICollection < String > ignored = new HashSet < String > ( ) ;
89- // Not supported tags as of yet
90- ignored . Add ( SvgConstants . Tags . A ) ;
91- ignored . Add ( SvgConstants . Tags . ALT_GLYPH ) ;
92- ignored . Add ( SvgConstants . Tags . ALT_GLYPH_DEF ) ;
93- ignored . Add ( SvgConstants . Tags . ALT_GLYPH_ITEM ) ;
94- ignored . Add ( SvgConstants . Tags . COLOR_PROFILE ) ;
95- ignored . Add ( SvgConstants . Tags . DESC ) ;
96- ignored . Add ( SvgConstants . Tags . FE_BLEND ) ;
97- ignored . Add ( SvgConstants . Tags . FE_COLOR_MATRIX ) ;
98- ignored . Add ( SvgConstants . Tags . FE_COMPONENT_TRANSFER ) ;
99- ignored . Add ( SvgConstants . Tags . FE_COMPOSITE ) ;
100- ignored . Add ( SvgConstants . Tags . FE_COMVOLVE_MATRIX ) ;
101- ignored . Add ( SvgConstants . Tags . FE_DIFFUSE_LIGHTING ) ;
102- ignored . Add ( SvgConstants . Tags . FE_DISPLACEMENT_MAP ) ;
103- ignored . Add ( SvgConstants . Tags . FE_DISTANT_LIGHT ) ;
104- ignored . Add ( SvgConstants . Tags . FE_FLOOD ) ;
105- ignored . Add ( SvgConstants . Tags . FE_FUNC_A ) ;
106- ignored . Add ( SvgConstants . Tags . FE_FUNC_B ) ;
107- ignored . Add ( SvgConstants . Tags . FE_FUNC_G ) ;
108- ignored . Add ( SvgConstants . Tags . FE_FUNC_R ) ;
109- ignored . Add ( SvgConstants . Tags . FE_GAUSSIAN_BLUR ) ;
110- ignored . Add ( SvgConstants . Tags . FE_IMAGE ) ;
111- ignored . Add ( SvgConstants . Tags . FE_MERGE ) ;
112- ignored . Add ( SvgConstants . Tags . FE_MERGE_NODE ) ;
113- ignored . Add ( SvgConstants . Tags . FE_MORPHOLOGY ) ;
114- ignored . Add ( SvgConstants . Tags . FE_OFFSET ) ;
115- ignored . Add ( SvgConstants . Tags . FE_POINT_LIGHT ) ;
116- ignored . Add ( SvgConstants . Tags . FE_SPECULAR_LIGHTING ) ;
117- ignored . Add ( SvgConstants . Tags . FE_SPOTLIGHT ) ;
118- ignored . Add ( SvgConstants . Tags . FE_TILE ) ;
119- ignored . Add ( SvgConstants . Tags . FE_TURBULENCE ) ;
120- ignored . Add ( SvgConstants . Tags . FILTER ) ;
121- ignored . Add ( SvgConstants . Tags . FONT ) ;
122- ignored . Add ( SvgConstants . Tags . FONT_FACE ) ;
123- ignored . Add ( SvgConstants . Tags . FONT_FACE_FORMAT ) ;
124- ignored . Add ( SvgConstants . Tags . FONT_FACE_NAME ) ;
125- ignored . Add ( SvgConstants . Tags . FONT_FACE_SRC ) ;
126- ignored . Add ( SvgConstants . Tags . FONT_FACE_URI ) ;
127- ignored . Add ( SvgConstants . Tags . FOREIGN_OBJECT ) ;
128- ignored . Add ( SvgConstants . Tags . GLYPH ) ;
129- ignored . Add ( SvgConstants . Tags . GLYPH_REF ) ;
130- ignored . Add ( SvgConstants . Tags . HKERN ) ;
131- ignored . Add ( SvgConstants . Tags . MASK ) ;
132- ignored . Add ( SvgConstants . Tags . METADATA ) ;
133- ignored . Add ( SvgConstants . Tags . MISSING_GLYPH ) ;
134- ignored . Add ( SvgConstants . Tags . RADIAL_GRADIENT ) ;
135- ignored . Add ( SvgConstants . Tags . STYLE ) ;
136- ignored . Add ( SvgConstants . Tags . TITLE ) ;
137164 return ignored ;
138165 }
166+
167+ internal delegate ISvgNodeRenderer ISvgNodeRendererCreator ( ) ;
139168 }
140169}
0 commit comments