 You might have attached a talk from Armin just that he is a roller-coaster of this feature. He has talked about core aspects. I had dressed the day, I had a talk where I show how to use multi-colour gradients in macros. In this talk I will present you aspects of the file format. LibreOffice 7.6 has three new gradients in the standard palette. These are multi-gradients. The background here in the slide is one of them. It is a gradient sun down. You see that it has at least three colours, an orange, a pink and a blue. For those who have not noticed these new gradients, let us have a short look at them. This is the dialogue in question. It has a preview on the right side. Here is a gradient rainbow. In the options section, in the centre part, you can change the geometry of the gradient and its start and end colour. In the gradient section on the left side you can manage the gradients. And then you find the three new multi-colour gradients. The rainbow, sunrise and sun down. These gradients were designed by Heiko. This slide shows some changes to the geometry of the gradient rainbow. You can change, for example, the type to a linear or rectangular. You can move the centre or rotate the gradient. And this slide shows changing start and end colour. The left track channel has the original gradient sunrise. The other examples have changed start or end colour. Comparing the results, you see that there are intermediate colours, which are the same in all four variants. You cannot change them in the UI. Hopefully we have an extended user interface as the next year's conference. And now let's go forward to the file format. First we look how a gradient is saved in the first place. You see here a shape using a gradient from red to green. We start with a markup for the object itself. It contains the geometry of the object as well as its size and position. And furthermore, it has a reference to the style of the object. The style contains information, among other things, about line and area form in its graphic properties. In this example, there is a property of a film with a value gradient. But however, the gradient itself is not included in the style, only a reference to it. It is only in the gradient definition that we find the geometry of the gradient and its colours. Similar for a transparency gradient. In this example, the mirrored hella shape has a gradient in transparency. The style contains a reference to the definition of the transparency gradient. Only if such reference is present, then a gradient is used. Otherwise, you can only have a solid transparency. And that is the definition of the transparency gradient. A special property of a transparency gradient in terms of file format is that it is not a transparency that is saved, but the opposite, the opacity. So in the mirrored hella shape, the transparency starts at 10%, which is here 90%, and increases downwards to 100%, which is 0% opacity. Defining a colour transition is the essential part of a multi-colour gradient. We look at such a colour transition. You can describe it by its colours and the relative position of the colours in the total transition range. The relative position is called an offset. That way, the definition of the colour transition is independent from any shape which uses this gradient. All three example shapes use the same colour transition. To get multi-colour gradients, we need a new way to describe colour transitions. In LibreOffice 7.5, you can only set start colour and end colour. When developing a new feature, you look of course how such feature is handled in other five formats. In a first approach, it was considered to add only the new intermediate colours to the already existing colours for start and end. You can see such a solution in VML. At the same time, when Armin was working on multi-colour gradients, Thomas developed the same colours feature that uses colour definitions that go beyond simple RGB colour values. In the future, this must also be available for start and end colour in a multi-colour gradient. Therefore, we try to make it future-oriented. The file format is now designed so that not only the intermediate colours, but also the start and end colours are described in a new way. There exist several approaches to describe a colour transition. For example, that was a wrong chip. For example, you can use a parallel sequence of colours and of set values. Such approach you can see in GDI and in SQIA. Another approach is to combine these two into a sequence of pairs. That is what you find in CSS and in VML. Third approach is to make not a sequence, but put each colour of set pair in an element. That is done by OXM-R and SVG. Here is an example for the markup which is used in the transparency gradient. The grey parts are already there and you are the coloured parts. That is the actual way we use it in 7.6. Notice that we go with the element approach. The element has an offset and a value. Such element is called a stop. The new element is not yet available in ODF and so you need to save it in ODF extended. The element has a private prefix along extended. This slide shows a colour gradient definition. Here we use the element approach too. The new elements contain a colour type attribute. Such allows to describe other colour definitions later on. At the moment the type value is always RGB. The colour itself is specified in this case as a hexadecimal RGB value. Later however the type could be a theme and the colour value could be a theme colour name for example. The decision to use a gradient stop element in contrast to a string attribute or a sequence also has a advantage that child elements are possible. Such child elements are needed later for colour transformations like darken and lighten which are tint or shade in the other words which are included too in Tomas theme colour feature. Compare our solution with the OXML then it shows that the chosen concept fits well to that standard. I have marked the corresponding parts with the same colour. The value for the offset is 10,000 as you need for the position in OXML and we have values between 0 and 1 but it's not essential. And when you compare it with SVG you see again a good fit to it. We have offset same as SVG. SVG has some ways to define a colour. I have now here used its RGB function that fits quite good and you see the colour is we have hexadecimal and as an example of SVG there are decimal values but that's only a conversion. So now let's get forward to multicolour variants. As shown examples all have only start and end colour but you can probably already imagine how to add more colours. We simply use more than two of these new elements. This is done in the next example. On the left side you see the shape with a transition from red to green. You have already seen and I have added a third of this element. You can edit the file markup to get such multicolour variant. It's very easy. You use the existing elements as a template. Copper and paste such an element, change the numerical value of offset and the hexadecimal value of the colour. When you edit the markup make sure that the offset values are always between 0 and 1. And that the stopped elements are arranged in increasing offset values. In the previous example the first colour has the offset value 0 and the last colour has the offset value 1. This is not necessary. If another value is used the first colour is extended to 0 and the last colour is continued to 1. This way you can get areas of constant colour at the beginning and end. You may wonder where the values .4, .5 and .6 used in the markup can be found in the drawing. For this we have to look at the complete colour gradient. In the example of the slide the gradient is based on this shown square and the colour transition range goes from the corner to the centre. So you see the values .4, .5 and .6. When you now have added such gradient you open the document and you save it and look again at the markup in the file you will notice that it has changed. In UDF a gradient also has the draw border property. This is called transition start in the current user interface. What we do is this. A gradient originally has 0% border and the first gradient stop is not at offset 0 but for example at .4 then this is converted to a border when saving. This is done to have a better backward compatibility. When you use a border other than 0% this compatibility change will not be applied. We'll look at another example. In this flag we have a background filled with three colours. However the transitions are hard and not gradients. How was this achieved? The solution is simple. Colour change, two gradient stops with identical offset are defined. The first was the colour value of the preceding segment. The second was the colour value of the following segment. Such hard transition is also possible with transparent gradients. In this example it was used to create a hole in the otherwise solid colour area film. I have placed an image behind the shape so that you can see the transparency. Notice the two stops with offset 0. The first with opacity 1 and the second with opacity 0. That is a hard transition. But although the first stop is at offset 0 the shape has a large area with solid colour. This is designed by using the old border. Now let us have a look at the gradient palette. The new file markup is reflected in the colour gradient palette. For transparency there exists no palette. If you use a transparency gradient in several documents you should create an example shape and drag it into the gallery. If you even need a shape itself you can insert it temporarily and copy the transparency gradient with a brush tool. Or you create a document template which has the definition of the opacity gradient and the style which we have referenced. The gradient palette is stored in the share folder in the LibreOffice installation. When you add or modify a button and use the buttons on the first time a copy of this file is stored in the config folder of your user profile. If you add a gradient this new gradient is available in the dialog same as the predefined ones. We look now how the gradient is stored in the palette file. I use the gradient sunrise for example. It's a lot to read but this gradient definition in the palette is the same as the definition in the file markup. That's what you have learned about the file markup. You can use directly for the gradient palette. This standard SOG file can be added with a simple editor. However, I recommend to use an XML editor which can validate that the markup is well formed. That way a missing bracket or quotation mark will be detected. Notice here again the increasing of set values from 0.5.75.1. And notice that the color of the first stop is copied to the old start column and the color of the last stop and the color of the last stop is copied to the end color. The implementation is so that the new elements are the primary elements and will determine the start and end color but when you come to edit the file format or use markers you should make sure that start and end color has the correct value. Let's sum up a little bit. The color stocks of a multicolor gradient are given in a gradient stop elements. For transparency gradient you use opacity stop elements. The offset values must be in range from 0 to 1. Stop elements must be ordered in regard to the offset. Two stops with same offset are allowed that produce a hard transition. The legacy start and end color attributes must have the same values as the first stop and you can edit both file markup or gradient palette as well. Now let's move on to question and answers. So much for that. In the background I was wondering what's the story that you're able to see in the model. In the start I have talked with the FTC how we can integrate it and there was meaning that we do not need a lot of new type values. For example Microsoft Office has HSL as a value because that are essentially RGB values. You can transform that. But you need of course a way to describe the same colors and they are not given by RGB values. They are described other ways and Microsoft has some other types which are not directly RGB values. And I have not seen a principle beddington. There was no story about that. There was no strong against adding such a type value. And I think the way it is currently done is I have written some text already but that was in the spring and then come the implementation so that it will surely not be in ODF 1.4 and it depends how many people will work in the ODF to see and how many time I have whether we can get it in ODF 1.5. Yes. What value do you suggest? So, there could be a start value as a result of the angle and then 0.3 0.5 but not the 0 to the mechanical one That is what is possible in VML. Normally we make not such shortened tricks in ODF. We try to keep ODF good human readable. Thank you.