page30
Decidi eu mesmo verificar o código fonte e ver se eu poderia encontrar o lugar que deveria ser corrigido. Se eu percebesse que poderia fazê-lo, eu compraria um SSD externo para compilar e fazer algumas experiências.
Minha primeira parada foi no opengrok.libreoffice.org. É uma maneira simples e rápida para pesquisar o código fonte. Esta é uma das melhores ferramentas do LibreOffice, desde que começaram o uso. Mesmo quando você tem o código em sua máquina local, é melhor usar o seu sistema de forma mais inteligente. A fonte OpenGrok é codificada por cores e tudo é clicável para levá-lo para a definição e as referências, tanto das classes como das funções.
Eu não me lembro exatamente quantas buscas fiz, mas finalmente encontrei o código para desenhar "linhas onduladas" (wave lines). Se soubesse desse termo com antecedência, teria sido mais rápido, mas sempre pensei nelas como um “sublinhado rabiscado” (squiggly underlines) e esse termo não trazia nada. Eventualmente, encontrei rotinas interessantes, como DrawText, ImplDrawTextLine,
LibreOffice Magazine | Agosto 2014
44
Mundo Libre
Artigo
ImplDrawWaveLine, DrawWavePixel, DrawWaveLine, etc. Normalmente, quem lê código tenta entendê-lo, mas a princípio, eu estava apenas tentando descobrir se o código que estava olhando era relevante.
O LibreOffice desenha o ondulado como uma propriedade da fonte e como parte de erros de ortografia/gramática e, por outras razões. Por isso, tive que ler o código, entender quem chamou quem, etc. Eventualmente, descobri que DrawWaveLine era a função que eu queria. Chamava-se a partir do final da rotina principal DrawText, que chama a lcl_DrawLineForWrongListData, que passou por uma lista de erros de gramática e ortografia e chama DrawWaveLine para cada área do problema. E nessa rotina, descobri uma pista forte:
Eu sabia que o sublinhado ortográfico era de 3 pixels de altura, por isso, naquele momento percebi que minha busca havia terminado. Decidi gastar dinheiro em um SSD externo para que pudesse fazer o download do
5302 if ( nStyle == WAVE_NORMAL )
5303 {
5304 nWaveHeight = 3;