NSTextView -> cacheDisplay loses some underlines but not others
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
add a comment |
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
How do you add the attributes, are you using TextKit?
– Koen
yesterday
add a comment |
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
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
nstextview nsbitmapimagerep
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
add a comment |
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
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
How do you add the attributes, are you using TextKit?
– Koen
yesterday