Check for grouped elements for font reports

This commit is contained in:
Georgy Litvinov 2020-07-26 12:46:10 +02:00
parent ba5fc11a2e
commit 1449c9d450

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Validation" script:language="StarBasic">Sub markval13 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Validation" script:language="StarBasic">Sub markval14
End Sub End Sub
@ -579,16 +579,19 @@ Sub onSelectFont(oEvent)
End Sub End Sub
Function getODGFontNames() As Variant Function getODGFontNames() As Variant
&apos;Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
Dim fontNames() As String Dim fontNames() As String
Dim pages As Object Dim pages As Object
Dim pageCount As Long Dim pageCount As Long
Dim page As Object Dim page As Object
Dim elementCount As Long Dim elementCount As Long
Dim groupCount As Long
Dim i As Long Dim i As Long
Dim j As Long Dim j As Long
Dim k As Long Dim k As Long
Dim element As Object Dim element As Object
Dim elementText As Object Dim elementText As Object
Dim groupElement As Object
Dim enum1 As Object Dim enum1 As Object
Dim enum1Element As Object Dim enum1Element As Object
Dim enum2 As Object Dim enum2 As Object
@ -621,6 +624,31 @@ Function getODGFontNames() As Variant
EndIf EndIf
Wend Wend
EndIf EndIf
If element.supportsService(&quot;com.sun.star.drawing.GroupShape&quot;) Then
groupCount = element.getCount()
For k = 0 To groupCount - 1
groupElement = element.getByIndex(k)
If groupElement.supportsService(&quot;com.sun.star.drawing.Text&quot;) Then
elementText = groupElement.getText()
enum1 = elementText.createEnumeration()
While enum1.hasMoreElements
enum1Element = enum1.nextElement
If enum1Element.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
enum2 = enum1Element.createEnumeration
While enum2.hasMoreElements
thisPortion = enum2.nextElement
If Len(thisPortion.String) &gt; 0 Then
fontName = thisPortion.CharFontName
If NOT fontIsAlreadyFound(fontNames, fontName) Then
AddToArray(fontNames, fontName)
EndIf
EndIf
Wend
EndIf
Wend
EndIf
Next k
EndIf
Next j Next j
Next i Next i
getODGFontNames = fontNames getODGFontNames = fontNames
@ -701,6 +729,8 @@ Function getCharsInFont(fontName As String) As String
Dim enum2 As Object Dim enum2 As Object
Dim thisPortion As Object Dim thisPortion As Object
Dim fontChar As Long Dim fontChar As Long
Dim groupCount As Long
Dim groupElement As Object
pages = ThisComponent.getDrawPages() pages = ThisComponent.getDrawPages()
pagesCount = pages.getCount() pagesCount = pages.getCount()
For i = 0 To pagesCount - 1 For i = 0 To pagesCount - 1
@ -731,6 +761,35 @@ Function getCharsInFont(fontName As String) As String
EndIf EndIf
Wend Wend
EndIf EndIf
If element.supportsService(&quot;com.sun.star.drawing.GroupShape&quot;) Then
groupCount = element.getCount()
For k = 0 To groupCount - 1
groupElement = element.getByIndex(k)
If groupElement.supportsService(&quot;com.sun.star.drawing.Text&quot;) Then
elementText = groupElement.getText()
enum1 = elementText.createEnumeration()
While enum1.hasMoreElements
enum1Element = enum1.nextElement
If enum1Element.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
enum2 = enum1Element.createEnumeration
While enum2.hasMoreElements
thisPortion = enum2.nextElement
If thisPortion.CharFontName = fontName Then
resultString = thisPortion.String
For k = 0 To Len(resultString) - 1
fontChar = Hex(Asc(Mid(resultString,k+1,1)))
If NOT IsInArray(resultArray,fontChar) Then
AddToArray(resultArray(), fontChar)
AddToArray(pageNums(), i + 1)
EndIf
Next k
EndIf
Wend
EndIf
Wend
EndIf
Next k
EndIf
Next j Next j
Next i Next i
resultString = &quot;&quot; resultString = &quot;&quot;