diff --git a/Addons.xcu b/Addons.xcu
index ad492f7..c33ea49 100644
--- a/Addons.xcu
+++ b/Addons.xcu
@@ -96,7 +96,7 @@
Uravnotežite posljednji redak
- macro:///ePublishing.Archive.adjustLastLineCurPara
+ macro:///ePublishing.Archive.balanceCurParaLastLine
_self
diff --git a/ePublishing/Archive.xba b/ePublishing/Archive.xba
index 5666518..2bcf2e3 100644
--- a/ePublishing/Archive.xba
+++ b/ePublishing/Archive.xba
@@ -1,6 +1,6 @@
-Sub archMark26
+Sub archMark27
End Sub
@@ -172,6 +172,7 @@ sub convertIndesignPageBreaks
Exit Sub
EndIf
turnOffTracking()
+ setZoomToSpeedUpTasks()
balanceFootNotes()
Dim oViewCursor As Object
@@ -231,6 +232,7 @@ sub convertIndesignPageBreaks
Wait 100
pageNumber = getPageNumber(oTextCursor.Text.createTextCursorByRange(oTextCursor.End))
EndIf
+
'check first character
oTextCursor.goRight(1,true)
nextPara = oTextCursor.End
@@ -261,9 +263,10 @@ sub convertIndesignPageBreaks
EndIf
End If
- If pageNumber - prevPageNumber < 2 Then
- 'stretchPrevPage(prevPara)
- EndIf
+
+ 'If pageNumber - prevPageNumber < 2 Then
+ 'stretchPrevPage(prevPara)
+ 'EndIf
prevPageNumber = pageNumber
oFound = ThisComponent.findNext(oFound.End, oSearch)
@@ -458,6 +461,18 @@ Sub stretchPrevPage()
oViewCursor.goToRange(oSavePosition,false)
End Sub
+Sub balanceCurParaLastLine()
+ Dim oViewCursor As Object
+ Dim oTextCursor As Object
+ Dim paraEnd As Object
+ Dim success As Boolean
+ Dim adjustType As Integer
+ fixViewCursor()
+ oViewCursor = ThisComponent.CurrentController.getViewCursor()
+ oViewCursor.ParaIsHyphenation = true
+ success = balanceParaTail(oViewCursor.Start, false)
+End Sub
+
Sub adjustLastLineCurPara()
Dim oViewCursor As Object
Dim oTextCursor As Object
@@ -477,7 +492,7 @@ Sub adjustLastLineCurPara()
adjustType = oTextCursor.ParaAdjust
hyph = oTextCursor.ParaIsHyphenation
oTextCursor.ParaIsHyphenation = true
- success = balanceParaTail(oTextCursor.Start)
+ success = balanceParaTail(oTextCursor.Start, true)
If success And adjustType = 2 Then
oTextCursor.ParaLastLineAdjust = 2
Else
@@ -506,7 +521,7 @@ Sub balanceFootNote(textElement As Object)
enum1Element = enum1.nextElement
If enum1Element.supportsService("com.sun.star.text.Paragraph") Then
oViewCursor.goToRange(enum1Element,false)
- adjustLastLineCurPara()
+ balanceCurParaLastLine()
EndIf
Wend
End Sub
@@ -540,7 +555,7 @@ End Function
-Function balanceParaTail(targetPara As Object) As Boolean
+Function balanceParaTail(targetPara As Object, strictMode As Boolean) As Boolean
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim oContent As Object
@@ -553,10 +568,10 @@ Function balanceParaTail(targetPara As Object) As Boolean
oContentStart = getParaStart(oTextCursor)
oContentEnd = getParaEnd(oTextCursor)
oContent = getParaSelected(oContentStart,oContentEnd)
- balanceParaTail = balanceContentTail(oContent)
+ balanceParaTail = balanceContentTail(oContent, strictMode)
End Function
-Function balanceContentTail(oContent As Object) As Boolean
+Function balanceContentTail(oContent As Object, strictMode As Boolean) As Boolean
' Globalscope.BasicLibraries.LoadLibrary( "MRILib" )
balanceContentTail = false
Dim oViewCursor As Object
@@ -564,20 +579,18 @@ Function balanceContentTail(oContent As Object) As Boolean
Dim lineCount As Integer
Dim initialLineCount As Integer
Dim lineLen As Integer
+ Dim initialLineLen As Integer
Dim minLastLineLength As Integer
Dim medianLen As Integer
Dim paraLines() As Object
- Dim decreaseKerningFailed As Boolean
- Dim increaseKerningFailed As Boolean
Dim fallBackSuccess As Boolean
fallBackSuccess = false
- decreaseKerningFailed = false
- increaseKerningFailed = false
oViewCursor = ThisComponent.CurrentController.getViewCursor()
paraLen = Len(oContent.String)
paraLines = getContentLines(oContent)
initialLineCount = getParaLinesCount(paraLines)
lineLen = getParaLineLength(paraLines, 0)
+ initialLineLen = lineLen
medianLen = calculateMedianParaLen(oContent)
minLastLineLength = medianLen * 0.93
@@ -600,9 +613,20 @@ Function balanceContentTail(oContent As Object) As Boolean
'Tightened last line but it is still smaller than we need
fallBackSuccess = tryExpandPrevLines(oContent, minLastLineLength)
If Not fallBackSuccess Then
- oContent.CharKerning = initialCharKerning
+ If strictMode Then
+ oContent.CharKerning = initialCharKerning
+ balanceContentTail = false
+ Else
+ paraLines = getContentLines(oContent)
+ lineLen = getParaLineLength(paraLines,0)
+ If (lineLen < initialLineLen) Then
+ oContent.CharKerning = initialCharKerning
+ balanceContentTail = false
+ Else
+ balanceContentTail = true
+ EndIf
+ EndIf
oViewCursor.collapseToEnd()
- balanceContentTail = false
Exit Function
EndIf
Exit Do
@@ -657,10 +681,15 @@ End Function
Function tryExpandPrevLines(oPara As Object, minLastLineLength As Integer) As Boolean
Dim lineCount As Integer
+ Dim finishLineCount As Integer
Dim initialLineCount As Integer
Dim paraLine As Object
+ Dim finishLastline As Object
Dim lineNum As Integer
Dim failedLines() As Integer
+ Dim lastLineCharKerning As Integer
+ Dim paraLines() As Object
+ Dim lineCharKerning As Integer
paraLines = getContentLines(oPara)
lineLen = getParaLineLength(paraLines,0)
initialLineCount = getParaLinesCount(paraLines)
@@ -677,9 +706,16 @@ Function tryExpandPrevLines(oPara As Object, minLastLineLength As Integer) As Bo
lineLen = getParaLineLength(paraLines,0)
If lineNum > 1 And (lineCount <> initialLineCount Or paraLine.CharKerning > MAX_CHAR_KERNING) Then
AddToArray(failedLines, lineNum)
- decreaseCharKerning(paraLine)
+ lineCharKerning = decreaseCharKerning(paraLine)
paraLines = getContentLines(oPara)
lineCount = getParaLinesCount(paraLines)
+ If lineCount > initialLineCount Then
+ Do While lineCount > initialLineCount And lineCharKerning > MIN_CHAR_KERNING
+ lineCharKerning = decreaseCharKerning(paraLine)
+ paraLines = getContentLines(oPara)
+ lineCount = getParaLinesCount(paraLines)
+ Loop
+ EndIf
lineLen = getParaLineLength(paraLines,0)
lineNum = 0
ElseIf lineNum = 1 And paraLine.CharKerning > MAX_CHAR_KERNING Then
@@ -692,8 +728,50 @@ Function tryExpandPrevLines(oPara As Object, minLastLineLength As Integer) As Bo
Else
tryExpandPrevLines = false
EndIf
+ normalizeLastLine(oPara)
+
+
End Function
+Sub normalizeLastLine(oPara As Object)
+ Dim lineCount As Integer
+ Dim finishLineCount As Integer
+ Dim initialLineCount As Integer
+ Dim paraLine As Object
+ Dim finishLastline As Object
+ Dim lineNum As Integer
+ Dim failedLines() As Integer
+ Dim lastLineCharKerning As Integer
+ Dim paraLines() As Object
+ Dim oTextCursor As Object
+ oTextCursor = oPara.Text.createTextCursorByRange(oPara)
+ oTextCursor.collapseToEnd()
+ If ( oTextCursor.CharKerning > 0 ) Then
+ Exit Sub
+ EndIf
+
+ 'increase last line kerning to 0
+ paraLines = getContentLines(oPara)
+ lineCount = getParaLinesCount(paraLines)
+ finishLineCount = lineCount
+ finishLastline = paraLines(UBound(paraLines))
+ 'try just set 0 char kerning to last line, reduce kerning if failed
+ lastLineCharKerning = 0
+ finishLastline.CharKerning = lastLineCharKerning
+ paraLines = getContentLines(oPara)
+ lineCount = getParaLinesCount(paraLines)
+ If lineCount > finishLineCount Then
+ Do While lineCount > finishLineCount AND lastLineCharKerning > MIN_CHAR_KERNING
+ lastLineCharKerning = lastLineCharKerning - 2
+ finishLastline.CharKerning = lastLineCharKerning
+ paraLines = getContentLines(oPara)
+ lineCount = getParaLinesCount(paraLines)
+ Loop
+ EndIf
+
+End Sub
+
+
Function getParaLinesCount(paraLines() As Object) As Integer
getParaLinesCount = UBound(paraLines) + 1
@@ -739,7 +817,7 @@ Function getContentLines(oContent As Object) As Variant
getContentLines = paraLines
End Function
-Sub decreaseCharKerning(oPara As Object)
+Function decreaseCharKerning(oPara As Object) As Integer
Dim initialCharKerning As Integer
Dim textExcerpts As Object
Dim textExcerpt As Object
@@ -750,9 +828,10 @@ Sub decreaseCharKerning(oPara As Object)
If (initialCharKerning >= MIN_CHAR_KERNING) Then
oPara.CharKerning = initialCharKerning - 2
EndIf
-End Sub
+ decreaseCharKerning = initialCharKerning - 2
+End Function
-Sub increaseCharKerning(oPara As Object)
+Function increaseCharKerning(oPara As Object) As Integer
Dim initialCharKerning As Integer
Dim textExcerpts As Object
Dim textExcerpt As Object
@@ -761,7 +840,9 @@ Sub increaseCharKerning(oPara As Object)
initialCharKerning = oPara.CharKerning
EndIf
oPara.CharKerning = initialCharKerning + 2
-End Sub
+ increaseCharKerning = initialCharKerning + 2
+End Function
+
Function lastLineIsNotBalanced(lineLen As Integer,minLastLineLength As Integer) As Boolean
lastLineIsNotBalanced = true
If lineLen = 0 Then
@@ -1162,4 +1243,26 @@ Sub subShellSort(mArray)
h = h \ 3
Loop
End Sub
+
+sub setZoomToSpeedUpTasks
+ dim document as object
+ dim dispatcher as object
+ dim args1(2) as new com.sun.star.beans.PropertyValue
+ dim args2(1) as new com.sun.star.beans.PropertyValue
+
+ document = ThisComponent.CurrentController.Frame
+ dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
+ args1(0).Name = "Zoom.Value"
+ args1(0).Value = 60
+ args1(1).Name = "Zoom.ValueSet"
+ args1(1).Value = 28703
+ args1(2).Name = "Zoom.Type"
+ args1(2).Value = 0
+ dispatcher.executeDispatch(document, ".uno:Zoom", "", 0, args1())
+ args2(0).Name = "ViewLayout.Columns"
+ args2(0).Value = 1
+ args2(1).Name = "ViewLayout.BookMode"
+ args2(1).Value = false
+ dispatcher.executeDispatch(document, ".uno:ViewLayout", "", 0, args2())
+end sub
\ No newline at end of file
diff --git a/ePublishing/Hyphenations.xba b/ePublishing/Hyphenations.xba
index 0ad9425..48e670e 100644
--- a/ePublishing/Hyphenations.xba
+++ b/ePublishing/Hyphenations.xba
@@ -15,6 +15,7 @@ Private Sub convertHyphInDoc()
statusIndicator = ThisComponent.getCurrentController.StatusIndicator
statusIndicator.Start(getTranslation("hyphenationsInProgress"),10)
turnOffTracking
+ setZoomToSpeedUpTasks()
AcceptAllTrackedChanges
convertHyphInText(ThisComponent.Text)
' Globalscope.BasicLibraries.LoadLibrary( "MRILib" )
diff --git a/ePublishing/journals.xba b/ePublishing/journals.xba
index 9c7c1f0..6cb8553 100644
--- a/ePublishing/journals.xba
+++ b/ePublishing/journals.xba
@@ -29,6 +29,7 @@ Private Sub makeUpIssue
If NOT confirm(description) Then
Exit Sub
EndIf
+ setZoomToSpeedUpTasks()
EIFN = "ЭиФН"
PHA = "ФА"
@@ -1316,7 +1317,7 @@ Function shrinkPageContent() As Boolean
decreaseContentCharHeight(targetContent(i), delta)
EndIf
If shrinkContentWithKerning(targetContent(i)) Then
- balanceContentTail(targetContent(i))
+ balanceContentTail(targetContent(i),false)
EndIf
If isContentPageChanged(initPosition, initPageNum) Then
Exit Function