18
18
with VSS.IRIs ;
19
19
with VSS.XML.Events ;
20
20
21
+ with Markdown.Attribute_Lists ;
21
22
with Markdown.Inlines.Visitors ;
22
23
with Markdown.Block_Containers ;
23
24
with Markdown.Blocks.Indented_Code ;
@@ -36,6 +37,9 @@ package body GNATdoc.Backend.ODF_Markup is
36
37
VSS.IRIs.To_IRI (" urn:oasis:names:tc:opendocument:xmlns:office:1.0" );
37
38
Text_Namespace : constant VSS.IRIs.IRI :=
38
39
VSS.IRIs.To_IRI (" urn:oasis:names:tc:opendocument:xmlns:text:1.0" );
40
+ SVG_Namespace : constant VSS.IRIs.IRI :=
41
+ VSS.IRIs.To_IRI
42
+ (" urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" );
39
43
40
44
Binary_Data_Element : constant VSS.Strings.Virtual_String := " binary-data" ;
41
45
Frame_Element : constant VSS.Strings.Virtual_String := " frame" ;
@@ -45,8 +49,9 @@ package body GNATdoc.Backend.ODF_Markup is
45
49
List_Item_Element : constant VSS.Strings.Virtual_String := " list-item" ;
46
50
P_Element : constant VSS.Strings.Virtual_String := " p" ;
47
51
48
- Style_Name_Attribute : constant VSS.Strings.Virtual_String :=
49
- " style-name" ;
52
+ Height_Attribute : constant VSS.Strings.Virtual_String := " height" ;
53
+ Style_Name_Attribute : constant VSS.Strings.Virtual_String := " style-name" ;
54
+ Width_Attribute : constant VSS.Strings.Virtual_String := " width" ;
50
55
51
56
GNATdoc_Paragraph_Style : constant VSS.Strings.Virtual_String :=
52
57
" GNATdoc_20_paragraph" ;
@@ -68,6 +73,9 @@ package body GNATdoc.Backend.ODF_Markup is
68
73
(Self : in out Annotated_Text_Builder;
69
74
Text : VSS.Strings.Virtual_String);
70
75
76
+ overriding procedure Visit_Soft_Line_Break
77
+ (Self : in out Annotated_Text_Builder) is null ;
78
+
71
79
overriding procedure Enter_Emphasis
72
80
(Self : in out Annotated_Text_Builder);
73
81
@@ -89,12 +97,14 @@ package body GNATdoc.Backend.ODF_Markup is
89
97
overriding procedure Enter_Image
90
98
(Self : in out Annotated_Text_Builder;
91
99
Destination : VSS.Strings.Virtual_String;
92
- Title : VSS.Strings.Virtual_String);
100
+ Title : VSS.Strings.Virtual_String;
101
+ Attributes : Markdown.Attribute_Lists.Attribute_List);
93
102
94
103
overriding procedure Leave_Image
95
104
(Self : in out Annotated_Text_Builder;
96
105
Destination : VSS.Strings.Virtual_String;
97
- Title : VSS.Strings.Virtual_String);
106
+ Title : VSS.Strings.Virtual_String;
107
+ Attributes : Markdown.Attribute_Lists.Attribute_List);
98
108
99
109
procedure Build_Annotated_Text
100
110
(Result : in out VSS.XML.Event_Vectors.Vector;
@@ -375,8 +385,11 @@ package body GNATdoc.Backend.ODF_Markup is
375
385
overriding procedure Enter_Image
376
386
(Self : in out Annotated_Text_Builder;
377
387
Destination : VSS.Strings.Virtual_String;
378
- Title : VSS.Strings.Virtual_String)
388
+ Title : VSS.Strings.Virtual_String;
389
+ Attributes : Markdown.Attribute_Lists.Attribute_List)
379
390
is
391
+ use type VSS.Strings.Virtual_String;
392
+
380
393
Encoded_Content : VSS.Strings.Virtual_String;
381
394
382
395
begin
@@ -386,6 +399,18 @@ package body GNATdoc.Backend.ODF_Markup is
386
399
(Destination, Encoded_Content);
387
400
388
401
Write_Start_Element (Self.Stream, Draw_Namespace, Frame_Element);
402
+
403
+ for Attribute of Attributes loop
404
+ if Attribute.Name = " width" then
405
+ Write_Attribute
406
+ (Self.Stream, SVG_Namespace, Width_Attribute, Attribute.Value);
407
+
408
+ elsif Attribute.Name = " height" then
409
+ Write_Attribute
410
+ (Self.Stream, SVG_Namespace, Height_Attribute, Attribute.Value);
411
+ end if ;
412
+ end loop ;
413
+
389
414
Write_Start_Element (Self.Stream, Draw_Namespace, Image_Element);
390
415
Write_Start_Element (Self.Stream, Office_Namespace, Binary_Data_Element);
391
416
Write_Text (Self.Stream, Encoded_Content);
@@ -448,7 +473,8 @@ package body GNATdoc.Backend.ODF_Markup is
448
473
overriding procedure Leave_Image
449
474
(Self : in out Annotated_Text_Builder;
450
475
Destination : VSS.Strings.Virtual_String;
451
- Title : VSS.Strings.Virtual_String) is
476
+ Title : VSS.Strings.Virtual_String;
477
+ Attributes : Markdown.Attribute_Lists.Attribute_List) is
452
478
begin
453
479
Write_End_Element (Self.Stream, Office_Namespace, Binary_Data_Element);
454
480
Write_End_Element (Self.Stream, Draw_Namespace, Image_Element);
0 commit comments