element_femerge.erl 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. -module(element_femerge).
  2. -author('Konstantin Zakablukovsky').
  3. -include("svg.hrl").
  4. -compile(export_all).
  5. render_element(Record) ->
  6. wf_tags:emit_tag(<<"feMerge">>, nitro:render(Record#feMerge.body),
  7. lists:append([
  8. [
  9. {<<"id">>, Record#feMerge.id},
  10. {<<"class">>, Record#feMerge.class},
  11. {<<"style">>, Record#feMerge.style}
  12. ],
  13. svg_core(Record),
  14. svg_filter_primitive(Record),
  15. svg_presentation(Record),
  16. Record#feMerge.data_fields,
  17. Record#feMerge.aria_states
  18. ])).
  19. %% Common SVG attributes
  20. svg_core(Record)-> [
  21. {<<"xml:base">>, Record#feMerge.xmlbase},
  22. {<<"xml:lang">>, Record#feMerge.xmllang},
  23. {<<"xml:space">>, Record#feMerge.xmlspace}
  24. ].
  25. svg_filter_primitive(Record)-> [
  26. {<<"height">>, Record#feMerge.height},
  27. {<<"result">>, Record#feMerge.result},
  28. {<<"width">>, Record#feMerge.width},
  29. {<<"x">>, Record#feMerge.x},
  30. {<<"y">>, Record#feMerge.y}
  31. ].
  32. svg_presentation(Record)-> [
  33. {<<"alignment-baseline">>, Record#feMerge.alignment_baseline},
  34. {<<"baseline-shift">>, Record#feMerge.baseline_shift},
  35. {<<"clip">>, Record#feMerge.clip},
  36. {<<"clip-path">>, Record#feMerge.clip_path},
  37. {<<"clip-rule">>, Record#feMerge.clip_rule},
  38. {<<"color">>, Record#feMerge.color},
  39. {<<"color-interpolation">>, Record#feMerge.color_interpolation},
  40. {<<"color-interpolation-filters">>, Record#feMerge.color_interpolation_filters},
  41. {<<"color-profile">>, Record#feMerge.color_profile},
  42. {<<"color-rendering">>, Record#feMerge.color_rendering},
  43. {<<"cursor">>, Record#feMerge.cursor},
  44. {<<"direction">>, Record#feMerge.direction},
  45. {<<"display">>, Record#feMerge.display},
  46. {<<"dominant-baseline">>, Record#feMerge.dominant_baseline},
  47. {<<"enable-background">>, Record#feMerge.enable_background},
  48. {<<"fill">>, Record#feMerge.fill},
  49. {<<"fill-opacity">>, Record#feMerge.fill_opacity},
  50. {<<"fill-rule">>, Record#feMerge.fill_rule},
  51. {<<"filter">>, Record#feMerge.filter},
  52. {<<"flood-color">>, Record#feMerge.flood_color},
  53. {<<"flood-opacity">>, Record#feMerge.flood_opacity},
  54. {<<"font-family">>, Record#feMerge.font_family},
  55. {<<"font-size">>, Record#feMerge.font_size},
  56. {<<"font-size-adjust">>, Record#feMerge.font_size_adjust},
  57. {<<"font-stretch">>, Record#feMerge.font_stretch},
  58. {<<"font-style">>, Record#feMerge.font_style},
  59. {<<"font-variant">>, Record#feMerge.font_variant},
  60. {<<"font-weight">>, Record#feMerge.font_weight},
  61. {<<"glyph-orientation-horizontal">>, Record#feMerge.glyph_orientation_horizontal},
  62. {<<"glyph-orientation-vertical">>, Record#feMerge.glyph_orientation_vertical},
  63. {<<"image-rendering">>, Record#feMerge.image_rendering},
  64. {<<"kerning">>, Record#feMerge.kerning},
  65. {<<"letter-spacing">>, Record#feMerge.letter_spacing},
  66. {<<"lighting-color">>, Record#feMerge.lighting_color},
  67. {<<"marker-end">>, Record#feMerge.marker_end},
  68. {<<"marker-mid">>, Record#feMerge.marker_mid},
  69. {<<"marker-start">>, Record#feMerge.marker_start},
  70. {<<"mask">>, Record#feMerge.mask},
  71. {<<"opacity">>, Record#feMerge.opacity},
  72. {<<"overflow">>, Record#feMerge.overflow},
  73. {<<"pointer-events">>, Record#feMerge.pointer_events},
  74. {<<"shape-rendering">>, Record#feMerge.shape_rendering},
  75. {<<"stop-color">>, Record#feMerge.stop_color},
  76. {<<"stop-opacity">>, Record#feMerge.stop_opacity},
  77. {<<"stroke">>, Record#feMerge.stroke},
  78. {<<"stroke-dasharray">>, Record#feMerge.stroke_dasharray},
  79. {<<"stroke-dashoffset">>, Record#feMerge.stroke_dashoffset},
  80. {<<"stroke-linecap">>, Record#feMerge.stroke_linecap},
  81. {<<"stroke-linejoin">>, Record#feMerge.stroke_linejoin},
  82. {<<"stroke-miterlimit">>, Record#feMerge.stroke_miterlimit},
  83. {<<"stroke-opacity">>, Record#feMerge.stroke_opacity},
  84. {<<"stroke-width">>, Record#feMerge.stroke_width},
  85. {<<"text-anchor">>, Record#feMerge.text_anchor},
  86. {<<"text-decoration">>, Record#feMerge.text_decoration},
  87. {<<"text-rendering">>, Record#feMerge.text_rendering},
  88. {<<"unicode-bidi">>, Record#feMerge.unicode_bidi},
  89. {<<"visibility">>, Record#feMerge.visibility},
  90. {<<"word-spacing">>, Record#feMerge.word_spacing},
  91. {<<"writing-mode">>, Record#feMerge.writing_mode}
  92. ].