Good morning,
I would love to write a VNC server for OPENSTEP, but what I don't know is how to get an image of the entire screen. I know how to do this easily on the current macOS and on GNUstep, but I am not sure how to do it on OPENSTEP as the relevant classes (NSGraphicsContext and NSScreen) don't seem to have the methods on them to do it.
I am wondering if this is something that NeXT kept to themselves until later releases. Believe it or not, they did this with things as simple as NSOutlineView, which was a private class until macOS10.0.
Thanks, GC
GNUstep Lead Dev :)
https://github.com/gnustep
Well one thing to remember is that display postscript had this ability. I remember on my 040 cube, I would remote log in to the 030 board in the same box, and the 030 board ran headless. You would remote log in connected via ethernet (and I believe it was only 10Mb back then), and it worked great. So display postscript had some streaming like ability they leveraged that worked really well. So my guess is this is very doable, but not clear if you would somehow work atop that display postscript protocol or have to build your own from scratch on the box.
Quote from: zombie on December 18, 2023, 06:58:18 PMWell one thing to remember is that display postscript had this ability. I remember on my 040 cube, I would remote log in to the 030 board in the same box, and the 030 board ran headless. You would remote log in connected via ethernet (and I believe it was only 10Mb back then), and it worked great. So display postscript had some streaming like ability they leveraged that worked really well. So my guess is this is very doable, but not clear if you would somehow work atop that display postscript protocol or have to build your own from scratch on the box.
I think you're referring to -NXHost. I used to use this too. I would love to dig into this and create a server that people could use. I am doing this because I would simply love to use it remotely without emulation.
The other question is... is the computer fast enough to do this? :)
GC
Yes, thank you for remembering! I can't believe I blanked on the protocol name!
Have you seen Screencast
http://www.kevra.org/TheBestOfNext/ThirdPartyProducts/ThirdPartySoftware/NetworkingAndSysAdmin/ScreenCast/ScreenCast.html , the Author Bill Tscsumi gave me permission to use it awhile back :) The oter app Watchme is also very cool
http://www.kevra.org/TheBestOfNext/ThirdPartyProducts/ThirdPartySoftware/Multimedia/WatchMe/WatchMe.html and is available in our archives on
https://www.nextcomputers.org/NeXTfiles/Software/GScorpEXPLORE/ The CD shows examples of how it was used like interactive tutorials or how to's created by the authors. Neat stuff so far ahead of its time! One example I recall was Chrysler Financial 2500 seats managed by only 2 system administrators able to access and even train , troubleshoot any problems that may have developed comparing that to Windows NT of the time , we ran circles around them !
Wow that app is new to me, great find!
Quote from: Rob Blessin Black Hole on December 26, 2023, 06:09:31 PMHave you seen Screencast http://www.kevra.org/TheBestOfNext/ThirdPartyProducts/ThirdPartySoftware/NetworkingAndSysAdmin/ScreenCast/ScreenCast.html , the Author Bill Tscsumi gave me permission to use it awhile back :) The oter app Watchme is also very cool http://www.kevra.org/TheBestOfNext/ThirdPartyProducts/ThirdPartySoftware/Multimedia/WatchMe/WatchMe.html and is available in our archives on https://www.nextcomputers.org/NeXTfiles/Software/GScorpEXPLORE/ The CD shows examples of how it was used like interactive tutorials or how to's created by the authors. Neat stuff so far ahead of its time! One example I recall was Chrysler Financial 2500 seats managed by only 2 system administrators able to access and even train , troubleshoot any problems that may have developed comparing that to Windows NT of the time , we ran circles around them !
Hey Man!
Basically what I am looking for is how to do this programmatically. I know there are apps that have done it. Indeed, Grab.app does it beautifully. The issue is that I am not sure how to do it from source code. I am sure that they used DPS to do it, but I don't know how. I have my old purple book (Adobe's book about DPS) somewhere, but it doesn't give me a clue how to grab the entire screen.
It could be as easy as grabbing a context and dumping out the data, but again... no clue.
GC
Quote from: bheron on January 02, 2024, 08:20:06 PMHey Man!
Basically what I am looking for is how to do this programmatically. I know there are apps that have done it. Indeed, Grab.app does it beautifully. The issue is that I am not sure how to do it from source code. I am sure that they used DPS to do it, but I don't know how. I have my old purple book (Adobe's book about DPS) somewhere, but it doesn't give me a clue how to grab the entire screen.
It could be as easy as grabbing a context and dumping out the data, but again... no clue.
GC
Hello Greg: I just realized this was you,Happy New year !
I found this in our archives
https://www.nextcomputers.org/NeXTfiles/Docs/NeXTStep/3.3/nd/OperatingSystem/Part3_DriverKit/Reference/Classes/IOSVGADisplay.htmld/index.html , it is probably for intel drivers but it may offer some insite into how NeXTstep handles displays,
https://www.nextcomputers.org/NeXTfiles/Docs/NeXTStep/3.3/nd/ and you may check your NeXT libraries bookshelves directory as the the documentation packages may come in handy as templates.
I also found an excellent Openstep Developer tutorial PDF
https://cdn.preterhuman.net/texts/computing/nextstep-openstep/discovering.pdf , I hope it helps! Keep me in the loop.
Quote from: Rob Blessin Black Hole on January 03, 2024, 02:20:56 AMHello Greg: I just realized this was you,Happy New year !
I found this in our archives https://www.nextcomputers.org/NeXTfiles/Docs/NeXTStep/3.3/nd/OperatingSystem/Part3_DriverKit/Reference/Classes/IOSVGADisplay.htmld/index.html , it is probably for intel drivers but it may offer some insite into how NeXTstep handles displays,
https://www.nextcomputers.org/NeXTfiles/Docs/NeXTStep/3.3/nd/ and you may check your NeXT libraries bookshelves directory as the the documentation packages may come in handy as templates.
I also found an excellent Openstep Developer tutorial PDF https://cdn.preterhuman.net/texts/computing/nextstep-openstep/discovering.pdf , I hope it helps! Keep me in the loop.
Thanks, will do! Now that I have my slab back up and working THANKS TO YOU, I want to put out more software for it. I am also incentivized to pick up some of the HW things we discussed as well. Time is more open now for me, so I should be able to make some progress.
Yours, GC
Quote from: bheron on December 18, 2023, 10:21:22 AMGood morning,
I would love to write a VNC server for OPENSTEP, but what I don't know is how to get an image of the entire screen. I know how to do this easily on the current macOS and on GNUstep, but I am not sure how to do it on OPENSTEP as the relevant classes (NSGraphicsContext and NSScreen) don't seem to have the methods on them to do it.
I am wondering if this is something that NeXT kept to themselves until later releases. Believe it or not, they did this with things as simple as NSOutlineView, which was a private class until macOS10.0.
Thanks, GC
GNUstep Lead Dev :)
https://github.com/gnustep
Hi Greg,
I ran across a source code example from NeXT for an app called Grabber that may help you. It allows the user to put a window around an area on the screen and then it turns that into a TIFF file. It sounds like it might be sort of a basic version of Grab.app. The source code is located in the November '97 NeXTanswers zip file in the archives:
https://www.nextcomputers.org/NeXTfiles/Docs/NeXTanswers/The Grabber source code is located in the zip file here:
/Files/Source_Code_and_Tools/MiniExamples/AppKit/1251_Grabber.compressed
There are other source code examples in that directory that may be of interest too. I've attached the Grabber compressed file and the readme below. I hope that helps.
There are AFAIK two ways of doing what you want. One is to create a postscript window on autofill on top of the screen and then copy its content into an NXImage.
This is what Grab does, and it is slow but portable.
The fastest way is to go to the /dev/vid0 driver, but I don't know if it can work for anything but the black hardware.