Put back Color code in place of txetcolor due to crashes.

This commit is contained in:
Michael Griebling
2024-10-05 11:29:31 -04:00
parent a87d4b5a3c
commit 428537b8d9
5 changed files with 69 additions and 68 deletions

View File

@@ -235,10 +235,10 @@ public class MTMathAtom: NSObject {
return MTAccent(self as? MTAccent) return MTAccent(self as? MTAccent)
case .space: case .space:
return MTMathSpace(self as? MTMathSpace) return MTMathSpace(self as? MTMathSpace)
case .color: case .color, .textcolor:
return MTMathColor(self as? MTMathColor) return MTMathColor(self as? MTMathColor)
case .textcolor: // case .textcolor:
return MTMathTextColor(self as? MTMathTextColor) // return MTMathTextColor(self as? MTMathTextColor)
case .colorBox: case .colorBox:
return MTMathColorbox(self as? MTMathColorbox) return MTMathColorbox(self as? MTMathColorbox)
case .table: case .table:
@@ -684,32 +684,33 @@ public class MTMathColor: MTMathAtom {
Note: None of the usual fields of the `MTMathAtom` apply even though this Note: None of the usual fields of the `MTMathAtom` apply even though this
class inherits from `MTMathAtom`. i.e. it is meaningless to have a value class inherits from `MTMathAtom`. i.e. it is meaningless to have a value
in the nucleus, subscript or superscript fields. */ in the nucleus, subscript or superscript fields. */
public class MTMathTextColor: MTMathAtom { // FIXME: Removed due to crash
public var colorString:String="" //public class MTMathTextColor: MTMathAtom {
public var innerList:MTMathList? // public var colorString:String=""
// public var innerList:MTMathList?
init(_ color: MTMathTextColor?) { //
super.init(color) // init(_ color: MTMathTextColor?) {
self.type = .textcolor // super.init(color)
self.colorString = color?.colorString ?? "" // self.type = .textcolor
self.innerList = MTMathList(color?.innerList) // self.colorString = color?.colorString ?? ""
} // self.innerList = MTMathList(color?.innerList)
// }
override init() { //
super.init() // override init() {
self.type = .textcolor // super.init()
} // self.type = .textcolor
// }
public override var string: String { //
"\\textcolor{\(self.colorString)}{\(self.innerList!.string)}" // public override var string: String {
} // "\\textcolor{\(self.colorString)}{\(self.innerList!.string)}"
// }
override public var finalized: MTMathAtom { //
let newColor = super.finalized as! MTMathTextColor // override public var finalized: MTMathAtom {
newColor.innerList = newColor.innerList?.finalized // let newColor = super.finalized as! MTMathTextColor
return newColor // newColor.innerList = newColor.innerList?.finalized
} // return newColor
} // }
//}
// MARK: - MTMathColorbox // MARK: - MTMathColorbox
/** An atom representing an colorbox element. /** An atom representing an colorbox element.

View File

@@ -587,18 +587,18 @@ public struct MTMathListBuilder {
} }
let table = self.buildTable(env: env, firstList:nil, isRow:false) let table = self.buildTable(env: env, firstList:nil, isRow:false)
return table return table
} else if command == "color" { } else if command == "color" || command == "textcolor" {
// A color command has 2 arguments // A color command has 2 arguments
let mathColor = MTMathColor() let mathColor = MTMathColor()
mathColor.colorString = self.readColor()! mathColor.colorString = self.readColor()!
mathColor.innerList = self.buildInternal(true) mathColor.innerList = self.buildInternal(true)
return mathColor return mathColor
} else if command == "textcolor" { // } else if command == "textcolor" {
// A textcolor command has 2 arguments // // A textcolor command has 2 arguments
let mathColor = MTMathTextColor() // let mathColor = MTMathTextColor()
mathColor.colorString = self.readColor()! // mathColor.colorString = self.readColor()!
mathColor.innerList = self.buildInternal(true) // mathColor.innerList = self.buildInternal(true)
return mathColor // return mathColor
} else if command == "colorbox" { } else if command == "colorbox" {
// A color command has 2 arguments // A color command has 2 arguments
let mathColorbox = MTMathColorbox() let mathColorbox = MTMathColorbox()

View File

@@ -500,7 +500,7 @@ class MTTypesetter {
// so we skip to the next node. // so we skip to the next node.
continue continue
case .color: case .color, .textcolor:
// stash the existing layout // stash the existing layout
if currentLine.length > 0 { if currentLine.length > 0 {
self.addDisplayLine() self.addDisplayLine()
@@ -512,35 +512,35 @@ class MTTypesetter {
currentPosition.x += display!.width currentPosition.x += display!.width
displayAtoms.append(display!) displayAtoms.append(display!)
case .textcolor: // case .textcolor:
// stash the existing layout // // stash the existing layout
if currentLine.length > 0 { // if currentLine.length > 0 {
self.addDisplayLine() // self.addDisplayLine()
} // }
let colorAtom = atom as! MTMathTextColor // let colorAtom = atom as! MTMathTextColor
let display = MTTypesetter.createLineForMathList(colorAtom.innerList, font: font, style: style) // let display = MTTypesetter.createLineForMathList(colorAtom.innerList, font: font, style: style)
display!.localTextColor = MTColor(fromHexString: colorAtom.colorString) // display!.localTextColor = MTColor(fromHexString: colorAtom.colorString)
//
if prevNode != nil { // if prevNode != nil {
let subDisplay: MTDisplay = display!.subDisplays[0] // let subDisplay: MTDisplay = display!.subDisplays[0]
let subDisplayAtom = (subDisplay as? MTCTLineDisplay)!.atoms[0] // let subDisplayAtom = (subDisplay as? MTCTLineDisplay)!.atoms[0]
let interElementSpace = self.getInterElementSpace(prevNode!.type, right:subDisplayAtom.type) // let interElementSpace = self.getInterElementSpace(prevNode!.type, right:subDisplayAtom.type)
if currentLine.length > 0 { // if currentLine.length > 0 {
if interElementSpace > 0 { // if interElementSpace > 0 {
// add a kerning of that space to the previous character // // add a kerning of that space to the previous character
currentLine.addAttribute(kCTKernAttributeName as NSAttributedString.Key, // currentLine.addAttribute(kCTKernAttributeName as NSAttributedString.Key,
value:NSNumber(floatLiteral: interElementSpace), // value:NSNumber(floatLiteral: interElementSpace),
range:currentLine.mutableString.rangeOfComposedCharacterSequence(at: currentLine.length-1)) // range:currentLine.mutableString.rangeOfComposedCharacterSequence(at: currentLine.length-1))
} // }
} else { // } else {
// increase the space // // increase the space
currentPosition.x += interElementSpace // currentPosition.x += interElementSpace
} // }
} // }
//
display!.position = currentPosition // display!.position = currentPosition
currentPosition.x += display!.width // currentPosition.x += display!.width
displayAtoms.append(display!) // displayAtoms.append(display!)
case .colorBox: case .colorBox:
// stash the existing layout // stash the existing layout

View File

@@ -62,7 +62,7 @@ final class MTFontMathTableV2Tests: XCTestCase {
} }
workitem.notify(queue: .main) { [weak self] in workitem.notify(queue: .main) { [weak self] in
// print("\(Thread.isMainThread ? "main" : "global") completed .....") // print("\(Thread.isMainThread ? "main" : "global") completed .....")
let mTable = mtfont.mathTable // let mTable = mtfont.mathTable
if count % 70 == 0 { if count % 70 == 0 {
// let values = [ // let values = [
// mTable?.fractionNumeratorDisplayStyleShiftUp, // mTable?.fractionNumeratorDisplayStyleShiftUp,