NSTextView -> cacheDisplay теряет некоторые подчеркивания, но не другие - PullRequest
0 голосов
/ 27 декабря 2018

В моем приложении странная проблема с подчеркиванием.У меня нет проблем с другими свойствами шрифта (размер, стиль, полужирный и т. Д.), Только с подчеркиванием.

У меня есть текстовые данные в NSTextView, theView.Подчеркивания правильны везде в тексте.

Я использую такой код:

        dataPointers?[0] = UnsafeMutablePointer<UInt8>.allocate(capacity: totalBytes)
        cachedBMs[appDel.nextFrameIndex] = NSBitmapImageRep(bitmapDataPlanes: dataPointers, pixelsWide: Int(viewFrame.size.width * 2), pixelsHigh: Int(viewFrame.size.height * 2), bitsPerSample: 8, samplesPerPixel: 4, hasAlpha: true, isPlanar: false, colorSpaceName: NSCalibratedRGBColorSpace, bytesPerRow: Int(bytesPerRow), bitsPerPixel: 32)
        cachedBMs[appDel.nextFrameIndex]?.size = NSSize(width: viewFrame.size.width, height: viewFrame.size.height)
        cachedBMsDataPointer[appDel.nextFrameIndex] = dataPointers?[0]
        cachedBMsSize[appDel.nextFrameIndex] = totalBytes

        if let bitmap = cachedBMs[appDel.nextFrameIndex]
        {
        theView = NSKeyedUnarchiver.unarchiveObject(with: NSKeyedArchiver.archivedData(withRootObject: originalView))!
            theView.cacheDisplay(in: viewFrame, to: bitmap)
            cachedBMsDataPointer[appDel.nextFrameIndex] = bitmap.bitmapData
        }

Затем я использую этот растровый буфер для создания некоторых текстур для OpenGL (я знаю, я должен использоватьМы с металлом скоро будем) и рендерим их в другое окно.Не все подчеркивания видны.Те, что находятся в начале файла, отсутствуют.К концу файла правильные.

Текст может быть довольно длинным, более 5000 строк.Если я удаляю фрагмент текста из середины файла, подчеркивания в начале файла отображаются правильно в представлении OpenGL.Вот почему у меня есть клон NSTextView перед операцией, в противном случае это занимает так много времени, что это мешает пользователю редактировать NSTextView в окне.

Я прошел через атрибуты один за другим, и онито же самое каждый раз, как в начале, так и в конце файла, а также в тех случаях, когда подчеркивания видны и не видны в моем окне OpenGL.

Как я уже говорил выше, все остальные текстовые атрибуты всегда корректны.

Источником текста является либо файл RTF, либо вставленный из другого приложения, либо введенный непосредственно в NSTextView.Независимо от источника, поведение будет одинаковым.

...