NSTextView -> cacheDisplay loses some underlines but not others












1














In my app I am having an odd issue with underlines. I don’t have the issue with any other font related properties (size, style, bold, etc,), only with underlines.



I have text data in an NSTextView, theView. The underlines are correct everywhere in the text.



I use code like this:



        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
}


I then use that bitmap buffer to create some textures for OpenGL (I know, I should be using Metal and I will be soon) and render them to another window. Not all of the underlines are visible. The ones towards the beginning of the file are missing. The ones towards the end of the file are correct.



The text can be quite long, 5000+ lines. If i delete a chunk of text out of the middle of the file, the underlines at the start of the file appear correctly in the OpenGL view. This is why I have the clone the NSTextView before the operation, otherwise it takes so long that it interferes with the user editing the NSTextView in the window.



I’ve gone thru the attributes one by one and they are the same every time, both at the start and end of the file and in the cases where the underlines are visible and not visible in my OpenGL window.



As I said above, all other text attributes are always correct.










share|improve this question
























  • How do you add the attributes, are you using TextKit?
    – Koen
    yesterday
















1














In my app I am having an odd issue with underlines. I don’t have the issue with any other font related properties (size, style, bold, etc,), only with underlines.



I have text data in an NSTextView, theView. The underlines are correct everywhere in the text.



I use code like this:



        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
}


I then use that bitmap buffer to create some textures for OpenGL (I know, I should be using Metal and I will be soon) and render them to another window. Not all of the underlines are visible. The ones towards the beginning of the file are missing. The ones towards the end of the file are correct.



The text can be quite long, 5000+ lines. If i delete a chunk of text out of the middle of the file, the underlines at the start of the file appear correctly in the OpenGL view. This is why I have the clone the NSTextView before the operation, otherwise it takes so long that it interferes with the user editing the NSTextView in the window.



I’ve gone thru the attributes one by one and they are the same every time, both at the start and end of the file and in the cases where the underlines are visible and not visible in my OpenGL window.



As I said above, all other text attributes are always correct.










share|improve this question
























  • How do you add the attributes, are you using TextKit?
    – Koen
    yesterday














1












1








1







In my app I am having an odd issue with underlines. I don’t have the issue with any other font related properties (size, style, bold, etc,), only with underlines.



I have text data in an NSTextView, theView. The underlines are correct everywhere in the text.



I use code like this:



        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
}


I then use that bitmap buffer to create some textures for OpenGL (I know, I should be using Metal and I will be soon) and render them to another window. Not all of the underlines are visible. The ones towards the beginning of the file are missing. The ones towards the end of the file are correct.



The text can be quite long, 5000+ lines. If i delete a chunk of text out of the middle of the file, the underlines at the start of the file appear correctly in the OpenGL view. This is why I have the clone the NSTextView before the operation, otherwise it takes so long that it interferes with the user editing the NSTextView in the window.



I’ve gone thru the attributes one by one and they are the same every time, both at the start and end of the file and in the cases where the underlines are visible and not visible in my OpenGL window.



As I said above, all other text attributes are always correct.










share|improve this question















In my app I am having an odd issue with underlines. I don’t have the issue with any other font related properties (size, style, bold, etc,), only with underlines.



I have text data in an NSTextView, theView. The underlines are correct everywhere in the text.



I use code like this:



        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
}


I then use that bitmap buffer to create some textures for OpenGL (I know, I should be using Metal and I will be soon) and render them to another window. Not all of the underlines are visible. The ones towards the beginning of the file are missing. The ones towards the end of the file are correct.



The text can be quite long, 5000+ lines. If i delete a chunk of text out of the middle of the file, the underlines at the start of the file appear correctly in the OpenGL view. This is why I have the clone the NSTextView before the operation, otherwise it takes so long that it interferes with the user editing the NSTextView in the window.



I’ve gone thru the attributes one by one and they are the same every time, both at the start and end of the file and in the cases where the underlines are visible and not visible in my OpenGL window.



As I said above, all other text attributes are always correct.







nstextview nsbitmapimagerep






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited yesterday









Koen

2,14722455




2,14722455










asked Dec 27 '18 at 15:01









Howard Shere

6316




6316












  • How do you add the attributes, are you using TextKit?
    – Koen
    yesterday


















  • How do you add the attributes, are you using TextKit?
    – Koen
    yesterday
















How do you add the attributes, are you using TextKit?
– Koen
yesterday




How do you add the attributes, are you using TextKit?
– Koen
yesterday

















active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53947023%2fnstextview-cachedisplay-loses-some-underlines-but-not-others%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown






























active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53947023%2fnstextview-cachedisplay-loses-some-underlines-but-not-others%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Monofisismo

Angular Downloading a file using contenturl with Basic Authentication

Olmecas