 Great. So welcome. This is a GSOC Google summer of code panel as we have that every year because we have a liberal office Google summer of code season every year since the inception of the project Everybody I think Whom do we miss is there more mentors here Stefan? I don't know Cloth so if anybody cloth want to come on stage as The mentors at least this we don't we don't have all the students here unfortunately So we have Paris here, and we have two mentors presenting for their students, and we have a two videos Come on So this is this is a panel and Very quickly so GSOC if you don't know what it is. That's an annual program sponsored by Google and It's it used to be for students only, but it opened recently for everybody eight older than 18 and There's two kinds of projects a smaller one and the larger one It's always in the in the summer break like us kind of you a centric for you as Americans and Yeah, liberal office as I said has been part of GSOC from the start since 2011 We're very grateful for Google to spawn the students this year We had Five projects so five students and a bunch of mentors things to all The mentors and the org admins and of course things to Google for providing the steep hens But first and foremost of course things for the students for doing great work and things for the mentors For put in substantial amounts of time they're mentoring Okay, and then without further ado, let's start with the student presentations and the first one is Paris with the adding APNG support Hello. Hello. That's a typo My project was on adding APNG support so What is an APNG? It is an animated the PNG It is an unofficial extension that was added to PNG around 2008 by the Mojila Foundation Initially didn't have that good support. So it wasn't really ever added to liberal office, but eventually it started getting supported by all Major browsers that I could test and a lot of image editing software It has some advantages over GIF. So one is partial transparency GIF supports transparency. You can make the background transparent, but you can't have partial transparency So PNG supports that And then you also have direct coloring GIF works with palettes. You can have 256 colors per frame, but PNG doesn't care And generally smaller file sizes from from testing This format is backwards compatible with PNG also, which means that in the past APNGs would appear as the first PNG frame So how does it work? It introduces three new ancillary chunks in the PNG format unsupported ancillary chunks are ignored So that's also another reason why it was backwards compatible. So the first one would be the ACTL which just describes how many frames there are and how many times The animation should be replayed The FCTL which describes the frame that is Upcoming like the sequence number with height offsets, etc And then the FDAT which is like the I.Chunk It contains the pixels of the frame and it's also preceded by a sequence number to match it up with FCTL So the work done for this project was import support We use the graphic class and the animation class that we have in LibreOffice that is used by GIFs already and export support So because it's imported into a GIF it also means that there is support to roundtrip from GIF to APNG and back and also rendering However There were some bugs The first one the first big one that still needs to be fixed is a Partial transparency was broken after the big switch from transparency to alpha. There was some work In fixing that but there's still stuff to do. I think it was fixed in Skiya, but not in hardware rendering Then presentation mode seems to ignore blending modes There are some blending modes in the APNG format Which allow to either blend with a previous frame or not it didn't seem to work in presentation need to look into that and then roundtripping wouldn't retain the animation it says but actually I noticed that The image itself would be correct is just that when opened through an ODP file. It just wouldn't It wouldn't import as an animation. It wouldn't stand import as a static frame So that's work to be done there. It should be finished before 24.2 hopefully and have it nice and working and of course to add unit tests and Yeah That's all Yeah, thanks very much Paris and thanks also to quickie for mentoring next one up is Deep-hums work on converting writer API tests to C++. I don't know. I think quickie is not here. So Let me pretend. I know something about it and and read the slides so The the reason so this is an ongoing process since it's quite a number of years and why is it necessary or why is it actually desirable to convert that the Java based tests rather quite complex both in writing and also in debugging and fixing So if you break a test and figuring out why you broke it is quite a level more complex than if you could just Attach your debugger because it's a C++ test because of course the core There's also C++ and then you have the bridging in between and so you really don't have a backtrace etc So it's it's really quite quite easier for the project in total and for the poor developer who broke a test Then to fix that up And it's also substantially faster to run obviously if you don't need bridging if you don't need to pull up Java and And that's probably the most important bit. So you don't need a Java dependency You don't need Java installed You don't need to build everything with Java because usually you don't need that for almost anything when you develop the office So so that it's super useful for the project Conversion steps quite involved So I'd leave that let that stand here You can you can read that if you like if you're interested. I think the bottom line the the big picture the summary is It's complicated. It's a lot of work. You need to focus So it's kind of ideal to have that as a GSOC project where you the student has the time And the focus and can run this like get into that process and run it done for a number of tests rather than some project volunteer who has a few hours every day and then like Gets distracted and something else happens. So it's good thing to have that and to have it and in this like focus form for GSOC Examples what was what was done there? Is here like some some some conversion that that's also useful To reference that like as work done as a template for future work It's always great to have some example that people can then follow for For new contributors who want to get into that Yeah, so product was successful very grateful for that very important for the project And of course thanks to to the mentors for for supporting Deep home there and next one up is Byram with the search functionality to options dialogue and that's something that I think hi cool can show us I Can show a little bit I can try to show a little bit. I Mentored this project by run Conducted it. I was rather the co-mentor the first mentor is Andrea signer. So all the kudos to him the Issue itself. It's pretty clear. There's a request of Xila to add a search functionality to the options dialogue options are very complex we provide all the customization that One can imagine and it is necessary to search through it. Everyone experienced the situation to Being interested in some particular Switch but looking through all the tabs is annoying. So the idea was to add a search field It took by run not much time. I think it was the first patch was realized after a week and it Was able to reduce the tree on the left side of the option into What you are looking for so if you type something the tree reduces the question is how to get the data into the search and the first approach was To do it while compile time to extract all the strings from the UI files every Entry on the left side the tree on the left side Has a separate UI file with strings and you don't have access to it During runtime so strings needs to be accessed somehow else and first approach was to extract it Just during compile time create some text file large text files and take it with the application into The product it has a lot of it has a lot of shortcomings for example It is not local specific. It is depending on the language that you have while compilation obviously English so a second and a Little bit ahead it is patch set 36. So a little bit later Everything was changed and the data is now created It's a first start. It is parsed through all the individual tabs running in the thread and it is blazingly fast Surprisingly fast. I cannot judge how well it is implemented, but I haven't seen any delay in the creation so it looks in the end as Requested it is typical a bad presentation The the field where internet is Written that's a search field and it is a true field So you see it and I searched here in this example for internet and the left side is reduced and they you Get way more quicker to the result. Let's try a live example if we have time Have to be Those are challenges now to get the map Not a big challenge apparently so this is important information. This is a Locally built a variant it is submitted to master so it will be in the next release What you do here is to type and turn and you see it reduces Everything and you get all the entries here on the left side this internet internet is boring Let's try this icon and you get quickly to the place where icons are Somehow on the UI another example that is more realistic Quite often you want to change units. So let's search for unit and you get to a place unit Great inches. How about few what is the unit here? part of the implementation Was to not only use the strings that you see in the UI, but also see Access but that's a missing part, but also the tooltips if a Control has a tooltips that contains Information you may be interested in this too and here on this page. It is yeah You can see inch here as a unit the horizontal ruler has some unit and You probably want to change it to if you want to set it to centimeters You want to change all the inch to centimeters So you search for unit and you find the place where unit is addressed in the tooltip future future enhancement Enhancements to this is to also add the accessibility strings. It is Not implemented and to make it easier to find the exact place Could be for example to draw a frame around the the actual control That is end up here