Skip to content

Commit 9e63e97

Browse files
committed
Merge branch 'topic/vadim/images-edge' into 'edge'
Support images by ODF backend. See merge request eng/ide/gnatdoc!172
2 parents d625b92 + 84564bd commit 9e63e97

File tree

1 file changed

+32
-6
lines changed

1 file changed

+32
-6
lines changed

source/backend/odf/gnatdoc-backend-odf_markup.adb

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
with VSS.IRIs;
1919
with VSS.XML.Events;
2020

21+
with Markdown.Attribute_Lists;
2122
with Markdown.Inlines.Visitors;
2223
with Markdown.Block_Containers;
2324
with Markdown.Blocks.Indented_Code;
@@ -36,6 +37,9 @@ package body GNATdoc.Backend.ODF_Markup is
3637
VSS.IRIs.To_IRI ("urn:oasis:names:tc:opendocument:xmlns:office:1.0");
3738
Text_Namespace : constant VSS.IRIs.IRI :=
3839
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");
3943

4044
Binary_Data_Element : constant VSS.Strings.Virtual_String := "binary-data";
4145
Frame_Element : constant VSS.Strings.Virtual_String := "frame";
@@ -45,8 +49,9 @@ package body GNATdoc.Backend.ODF_Markup is
4549
List_Item_Element : constant VSS.Strings.Virtual_String := "list-item";
4650
P_Element : constant VSS.Strings.Virtual_String := "p";
4751

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";
5055

5156
GNATdoc_Paragraph_Style : constant VSS.Strings.Virtual_String :=
5257
"GNATdoc_20_paragraph";
@@ -68,6 +73,9 @@ package body GNATdoc.Backend.ODF_Markup is
6873
(Self : in out Annotated_Text_Builder;
6974
Text : VSS.Strings.Virtual_String);
7075

76+
overriding procedure Visit_Soft_Line_Break
77+
(Self : in out Annotated_Text_Builder) is null;
78+
7179
overriding procedure Enter_Emphasis
7280
(Self : in out Annotated_Text_Builder);
7381

@@ -89,12 +97,14 @@ package body GNATdoc.Backend.ODF_Markup is
8997
overriding procedure Enter_Image
9098
(Self : in out Annotated_Text_Builder;
9199
Destination : VSS.Strings.Virtual_String;
92-
Title : VSS.Strings.Virtual_String);
100+
Title : VSS.Strings.Virtual_String;
101+
Attributes : Markdown.Attribute_Lists.Attribute_List);
93102

94103
overriding procedure Leave_Image
95104
(Self : in out Annotated_Text_Builder;
96105
Destination : VSS.Strings.Virtual_String;
97-
Title : VSS.Strings.Virtual_String);
106+
Title : VSS.Strings.Virtual_String;
107+
Attributes : Markdown.Attribute_Lists.Attribute_List);
98108

99109
procedure Build_Annotated_Text
100110
(Result : in out VSS.XML.Event_Vectors.Vector;
@@ -375,8 +385,11 @@ package body GNATdoc.Backend.ODF_Markup is
375385
overriding procedure Enter_Image
376386
(Self : in out Annotated_Text_Builder;
377387
Destination : VSS.Strings.Virtual_String;
378-
Title : VSS.Strings.Virtual_String)
388+
Title : VSS.Strings.Virtual_String;
389+
Attributes : Markdown.Attribute_Lists.Attribute_List)
379390
is
391+
use type VSS.Strings.Virtual_String;
392+
380393
Encoded_Content : VSS.Strings.Virtual_String;
381394

382395
begin
@@ -386,6 +399,18 @@ package body GNATdoc.Backend.ODF_Markup is
386399
(Destination, Encoded_Content);
387400

388401
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+
389414
Write_Start_Element (Self.Stream, Draw_Namespace, Image_Element);
390415
Write_Start_Element (Self.Stream, Office_Namespace, Binary_Data_Element);
391416
Write_Text (Self.Stream, Encoded_Content);
@@ -448,7 +473,8 @@ package body GNATdoc.Backend.ODF_Markup is
448473
overriding procedure Leave_Image
449474
(Self : in out Annotated_Text_Builder;
450475
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
452478
begin
453479
Write_End_Element (Self.Stream, Office_Namespace, Binary_Data_Element);
454480
Write_End_Element (Self.Stream, Draw_Namespace, Image_Element);

0 commit comments

Comments
 (0)