Rendering Webkit into GL texture - opengl

I'm looking for a portable, as-less-hackish-as-possible way of rendering WebKit into texture, and injecting events back into texture. Bonus points for being able to override theme of UI elements (textboxes, buttons, scrollbars). Extra bonus points for being able to render into SDL surface as well. Overall, I'd like to be able to just grab a RGBA pixel byte array and do with it as I please. Browser shouldn't be running, it should all be done in-game.
This should in no way be platform dependent and should be compatible with developing both proprietary and DFGS-free software.

Berkelium is an open source (BSD) project designed to do this, but I don't have any personal experience with it.
Edit October 2013:
I still seem to be getting the occasional upvote for this answer, although as mentioned in the comments bellow Berkelium does seem to be pretty much abandoned (I know I vaguely defend it against that accusation in the comments, but realistically it is true).
I've read some encouraging things recently about Chromium Embedded and would suggest the dear reader may want to check that out, as well as this related SO question.
Awesomium is also well worth a mention. Not being FOSS might be a deal-breaker for some, but it is free to use if your revenue is <$100k.

I think Awesomium does what you are asking for. It is free for non-commercial use. But be forewarned, previous versions of the project had some serious bugs and performance issues. Try before you buy.

Related

html5 d3d application menus/hud

I'm looking to use html5/css/js for the menu system and hud of a C++ d3d application. Ideally I'd like a 64bit MSVC10 library that I can statically link to.
So far I'm looking at:
Berkelium
chromiumembedded
QtWebKit
Awesomium
Before I commit alot of time I'd like to understand the which library would be the best for my purposes (not just from the list above). Could I use WebKit directly? Or chromium?
Even though this concept seems to be catching on right now I can hardly find a single example showing how to do it or collating relevant information.
You may also look at GUI toolkits that embed/integrate/have plugins for your listed HTML renderers (MyGUI comes to mind, with Berkelium/Awesomium integration).
Berkelium or Awesomium in general are probably a good bet, they're rather widely used for embedding Webkit and will work well. Berkelium is somewhat newer, and may have a few less features, but documentation tends to be better.
Of note is the long history Awesomium's developers have of flip-flopping licenses and suddenly trying to get money out of users (they've had free licenses before, which then were retconned into a pay-when-you-release), so that should be taken into careful consideration before touching it.
I'm not familiar with chromiumembedded and Qt has gone heavily OpenGL, severely damaging its value in graphics apps in general and likely making it useless to you.

gtkmm and MSAA accessibility

I'm interested to know if gtkmm w/ ATK (or whatever) works with MSAA like Qt does. We're looking right now at switching toolkit from WX and it turns out that our testing software relies on MSAA to do it's thing (something I wish I'd known 3 years ago when we picked WX to begin with). Of all the GUI toolkits, I prefer GTKmm mainly due to it's use of signals and slots but in a way much more expressive and generic than Qt's....and without the need for the extra build step that requires the Qt VS plugin. The designer is much better too.
So I'd like to use GTKmm but the only discussions and google stuff I can find on the topic are 3+ years old. They lead me to believe the answer is no, it doesn't support it and if it does it's really shoddy. But a lot can change in 3 years.
So, anyone that uses GTK or GTKmm on win32 know if it supports the windows accessibility framework?
I can’t say for sure but I would lean toward very little to no support. I use the Jaws screen reader SOFTWARE SINCE I’m blind. It uses MSAA quite heavily and GTK applications such as Pidgin are almost completely inaccessible. While I can read some of the text on a screen figuring out weather I’m in an edit field or weather a button is selected is impossible. If my screen reader can’t deal with GTK applications I assume your testing software will have major issues as well.
I don't know if this is still being tracked but I will second this assessment as another windows screen reader user. gnuCash was the app I tried and it was pretty rough going. Worked like a dream in Gnome with Orca though. Apparently, it's like this, if you want windows accessibility, use QT and WxWidgets. If you want Linux, use gtk+. QT is going to be accessible in Linux apparently though this is yet to be (not till gnome 3, I think). Pity you had to abandon WxWidgets. I personally like their widgets since it has those sizers which take much of the guess work out of placement of controls. Important when you can't see and you want to build a gui. Looks like about the only cross-platform accessibility solutions right now are Xul and SWT (Java, you know). Sad thing about WxWidgets is that this sort of thing was reported to them two years ago but nothing seems to have been done about it.
http://trac.wxwidgets.org/ticket/9785
I would be delighted to know that I am wrong about this. I doubt it, though.

What would you do if you coded a C++/OO cross-platform framework and realize its laying on your disk for too much due to no time?

This project started as a development platform because i wanted to be able to write games for mobile devices, but also being able to run and debug the code on my desktop machine too (ie, the EPOC device emulator was so bad): the platforms it currently supports are:
Window-desktop
WinCE
Symbian
iPhone
The architecture it's quite complete with 16bit 565 video framebuffer, blitters, basic raster ops, software pixel shaders, audio mixer with shaders (dsp fx), basic input, a simple virtual file system... although this thing is at it's first write and so there are places where some refactoring would be needed.
Everything has been abstracted away and the guiding principle are:
mostly clean code, as if it was a book to just be read
object-orientation, without sacrifying performances
mobile centric
The idea was to open source it, but without being able to manage it, i doubt the software itself would benefit from this move.. Nevertheless, i myself have learned a lot from unmaintained projects.
So, thanking you in advance for reading all this... really, what would you do?
Throw it up on an open source website and attach a bunch of good keywords to help search engines find it. If someone's looking for it, they'll find it and be able to use it.
I would say that you should open source it.
If you do have the time, it may be helpful for other programmers who are interested in the project to know the status of the project, and what is next to do on the project. Writing a to do list may be helpful, or writing comments in the code may also help.
If you do not have the time to write up a to do list maybe somebody is willing to take the initiative on the project, find out what needs to be done.
Look at it a different way. The worst that can happen is that your work will go unnoticed, and your efforts will be lost. The best that can happen is that you will be recognized for having the foresight to start such a great project, and open sourcing it.
http://sourceforge.net
This allows you to set up as admin and manage the project.
Of course if somebody does not agree with you they can fork the project and start their own version but that's open source for you.
If you've put time and effort into it, don't let it die a quiet death. Instead share it under the license of your choice on a collaborative site. At the worst, you get nothing in return. At the best, other people like the idea and provide constructive feedback or code. Even better is if you get some time in the future to pick it back up.
Couple of good sites to post it on
codeplex
sorceforge
Definitely, you should open source it, just make the same considerations you made on this question on a place that anybody can see...
Maybe someone will pick it up, or just learn from it
Put it up on github so we can all check it out.

Application for sketching ideas on a computer [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 11 years ago.
Improve this question
I've always wanted to sketch all ideas I come up with in the computer instead of on paper, but everyone knows that sketching with good 'ol fashioned pen and paper beats the crap out of trying to do it with a mouse (or even worse, a touch pad).
So I turn to stack overflow with this question: Does any one of you know a magic program that will help in sketching out diagrams, ideas, etc. with decent speed on a computer?
I'm not after something that will do pretty diagrams (that take ages to do, btw.) like Visio, Dia (kudos the the Dia developers though, kick ass app), etc. but for jotting down quick ideas and drawing early work flow sketches, etc.
(I know - a wacom board, but it's not really feasible to carry it around with your laptop)
I still go for a whiteboard and a decent camera on the mobile phone.
Normally when working on the whiteboard, we often go through a phase of erasing out all the unimportant stuff after we've worked out what the real essence of the problem and the solution. So we put some nice pictures on the wiki ;)
Did you consider some kind of mind-mapping application ?
PersonalBrain is quite handy for that type of task, even though the "diagram" feature is quite limited.
alt text http://www.thebrain.com/site/personalbrain/learningzone/topUses/awareness3.png
I'm actually a big fan of OneNote. It's great for entering text and organizing it in a visual way.
This won't do for situations where you're working with other people, but I often do my brain-storming with GraphViz.
GraphViz gives you the dot and neato languages for drawing graphs. So you start jotting down items and the relationships between them in your favourite text editor:
graph brainstorm {
release -- documentation
release -- "bug fixes"
release -- enhancements
documentation -- "release notes"
documentation -- "user guide"
enhancements -- "user requests" -- "support team"
enhancements -- marketing -- demo
}
You can then turn this into a image:
neato diagram http://share4pic.com/images/2/9/3/2935067.jpg
There are lots of options for formatting and layout and so on if you want to prettify the output.
It doesn't work for idea's or diagrams, but i found this very impressive: I love sketch. Hopefully, we'll see similar tools in the future for other forms of information.
When i was still using windows i used adobe illustrator and a wacom tabled for sketching diagrams (example). Powerfull, but a steep learning curve, if you just want to do sketching.
On linux i use Inkscape (with a wacom tablet). It's not as powerful as illustrator, but it gets the job done. (example).
I would love to use a sketching tool for creating presentations. Have a number of slides on my screen, and just sketch to contents of every sheet, also using the wacom to drag and drop the slides in the right order, etc.
There was a research project called SILK (Sketching Interfaces Like Krazy) a few years ago (mid 90s) at Carnegie-Mellon. Two papers that talked about the work are Interactive Sketching for the Early Stages of User Interface Design and Just Draw It! Programming by Sketching Storyboards.
I thought their ideas were very cool, but the project seems to have blown away. I'm mentioning it here for two reasons:
To support the questioner's idea that this would be A Very Good Thing for early design stages, and
In hopes that someone else will have more luck than I did in finding out what happened to SILK (or at least the prototypes).
I know you are "not after something that will do pretty diagrams".
However, I believe this new web flash-based application LovelyCharts might be oo assistance for quick (and nice too) diagrams, and can be compliant with your goal to "jotting down quick ideas and drawing early work flow sketches, etc."
Example of work flow sketch:
The closest thing to the feeling of writing on paper with pencil or pen that I have found is a graphics tablet (relatively inexpensive and small Wacom Bamboo is enough) with Autodesk's SketchBook Pro software.
Try the trial (if you have graphics tablet handy, not really the same with a mouse), it's amazing how natural digital drawing feels with that app.
Depending on how close you are to implementing something, balsamiq mockups may be what you want. I find it great for mocking up user interfaces, and it's probably not a bad way to start sketching a development idea.
Autodesk Sketchbook Pro is the closest I've come to a whiteboard after an extensive search. Minimal controls, yet enough. It's also attractively priced, in line with its simplicty.
Maybe you should consider buying a Graphic Tablet .
I recommend Wacom Bamboo
I wouldn't suggest it, but people have mentioned mind-mapping products and even OneNote (¡sin comentarios!), so I'll plug my TheKBase Desktop and it's Cloud brother, TheKBase Web. NO, they will not help you draw things like on paper, but in many cases, diagrams are not what you need. You want to organize your ideas and whip them into shape.
If you insist on diagramming, 30x less annoying than Visio is SmartDraw (sorry for the Spanish grammar).
Moleskin for the win!

GUI system development resources? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
Could someone recommend any good resources for creating Graphics User Interfaces, preferably in C/C++?
Currently my biggest influence is 3DBuzz.com's C++/OpenGL VTMs (Video Training Modules). While they are very good, they cover a large area of graphics programming, so only skim the surface of GUI programming.
This question does relate to "How do I make a GUI?", where there is also a rough outline of my current structure.
Any response would be appreciated.
Edit:
I've just read some of the answers and spotted that I've missed some points. I had to type the question twice as I caught the wrong button and lost it.
I missed two important points, first: This will be used cross platform including homebrew on a Sony PSP. Second: I want to create a GUI system not use an existing one.
Edit 2: I think some of you are missing the point, I don't what to use an existing GUI system I want to build one.
Qt in it's current form is not portable to the PSP, never mind the overkill of such a task.
That said I've decided to create an IM-GUI, and have started to prototype the code.
I wouldn't use OpenGL for the GUI unless you are planning for hardware accelerated and/or 3D effects that you don't think you would get with a more traditional GUI toolkit (e.g Qt, wxWidgets, GTK, etc). If you just need a quick simple GUI for hosting your OpenGL graphics then FLTK is a nice choice. Otherwise, for rendering the GUI directly in OpenGL their are libraries like Crazy Eddie's GUI that do just that and provide lots of skinnable widgets that you won't have to reinvent. The window and OpenGL context could then be provide with a portable library like SDL.
EDIT: Now that I've gone back and taken at look your other post I think I have a better understanding of what you are asking. For a GUI on an embedded system like the Nintendo DS, I would consider using an "immediate mode" GUI. Jari Komppa has a good tutorial about them, but you could use a more object-oriented approach with C++ than the C code he presents.
http://www.fox-toolkit.org has an API reference, if you're looking how to work with a specific framework. Or were you more interested in general theory or something more along the lines of how to do the low-level stuff yourself?
For more information about "immediate mode" GUI, I can recommend the Molly Rocket forums. There's a good video presentation of the thinking behind IM-GUI, along with lots of discussion.
I recently hacked together a very quick IM-GUI system based on presentation on Jari's page, and in my case, where I really just wanted to be able to get a couple of buttons and boxes on the screen, and more or less just hard code the response to the inputs, it really felt like the right thing to do, instead of going for a more full blown GUI-architecture. (This was in a DirectX-application, so the number of choices I had was pretty limited).
One of the fastest ways is to use python with a gui binding like pyQt, PyFLTK, tkinter, wxPython or even via pygame which uses SDL.
Its easy fast and platform independent.
Also the management of the packages is unbeatable.
See:
http://wiki.python.org/moin/PyQt
http://www.fltk.org/
(tkinter is default and already packaged with python)
http://wxpython.org/
http://www.pygame.org/news.html
For a platform like the PSP, I'd worry slightly about the performance of an IM GUI solution. With a traditional retained mode type of solution, when you create a control, you can also create the vertex buffer/display list or what-have-you required to render it. With an immediate mode solution, it seems to me that you'd need to recreate this dynamically each frame.
You might not care about this, if you're only doing a few buttons, or it's not going to be used in-game (assuming you're making a game) but, especially if you have a fair bit of text, the cost of rendering might start to hurt if you can't find a way to cache the display lists somehow.
Have a look at Qt. It is an open source library for making GUI's. Unlike Swing in Java, it assumes a lot of stuff, so it is really easy to make functional GUI's. For example, a textarea assumes that you want a context menu when you right click it with copy, paste, select all, etc. The documentation is also very good.
I'll second Qt. It's cross platform, and I found it much easier to work with than the built in Visual Studio GUI stuff. It's dual-licensed, so if you don't want your code to be GPL you could purchase a license instead.
I've had a look at the Video from Molley Rocket and Looked through Jari Komppa's cached tutorials.
An IM-GUI seems the best way to go, I think it will be a lot more streamlined, and lot quicker to build than the system I originally had in mind.
Now a new issue, I can only except one Answer. :(
Thanks again to Monjardin and dooz, cheers.
thing2k
I'd have a look at GLAM and GLGooey