Creating a user interface that accepts sketch input - drawing

I would like to create a simple application asks the user to draw an image they have been shown. Once the user has completed the image the program would score the drawing. Are there any existing libraries for creating interfaces that accept sketches/drawing from users? I need a sketch object (maybe as a vector graph) which can be processed.
The program should run on tablets and touch screen laptops, preferably on windows however multi-platform would be ideal. I am open to using what ever programming language is best for this project.
Currently I am looking at the SATIN library (http://dub.washington.edu:2007/projects/satin/) but it is rather old, the last change was in 2001.

Maybe you can try Pencil. It's a add-ons for firefox and you can easily draw some sketch schema (or mockup).
Download Pencil for Firefox

Related

SFML vs Qt in C++

I decided to switch from console to windowed programs, so I did a search for the best graphical libraries for C++, and of the many I found, I liked the following ones:
Qt
SFML
I have to decide which one to use, so having some doubts only I ask you the following questions
When to use Qt and when SFML?
Is SFML only suitable for creating vidiogames or can it also be used to create dekstop apps, or is it better to use Qt for this purpose?
Does SFML already include constructs for desktop apps like buttons?
If I created the same desktop app once with Qt and the other with SFML:
which would be faster in execution.
which would be lighter in terms of memory usage.
Imagine a simple programme with an input text and a button, where you enter a path to a file to be encrypted, and clicking the button below the input text starts the encryption process
As far as legal terms are concerned:
If I were to sell my software realised with the SFML library, would I have to pay them anything?
Same question but with Qt
When to use Qt and when SFML?
Qt is for any kind of Desktop app that uses a rather standard GUI. SFML is for creating games with their own non-standard GUI.
Is SFML only suitable for creating vidiogames or can it also be used to create dekstop apps, or is it better to use Qt for this purpose?
While you can create a standard desktop application with SFML, it's kinda like creating a model of the river Kwai bridge from toothpicks. Certainly an interesting hobby, but you will need to invest an extraordinary amount of time and patience to create something people will judge an interesting oddity.
Does SFML already include constructs for desktop apps like buttons?
Not in a way you would expect. Not like Qt.
If I created the same desktop app once with Qt and the other with SFML:
which would be faster in execution.
The SFML app.
which would be lighter in terms of memory usage.
The SFML app.
Please note that programming the SFML app to a standard of the Qt app would also probably take 100 to 1000 times as long and much higher skill. So those questions above do not make sense without this context.
It is a little like asking what is more fuel efficient, flying to Sydney or running to Sydney? Well, since running uses zero kerosene, running is more efficient. Just takes a pretty good runner and a lot of time. Well, assuming you are in Australia, otherwise, good luck. So you are not asking the right question here, nobody would run to Sydney based on how much kerosene they save. That is not the correct measurement to base your decision on.
Imagine a simple programme with an input text and a button, where you enter a path to a file to be encrypted, and clicking the button below the input text starts the encryption process
Yes, that is the job of frameworks like Qt, not full screen renderers like SFML. If you don't want 3d fireballs exploding while you do your encryption, stay with Qt.
If I were to sell my software realised with the SFML library, would I have to pay them anything?
No.
Same question but with Qt
No.

Is it possible to write a PSD file from ColdFusion

I would like to be able to take a number of separate image files, mostly JPGs and PNGs, and programatically write them into a PSD file in ColdFusion. The idea is that I can create an online tool that I could use to create wedding albums from my digital wedding photos. Considering the intended use, it is imperative that image quality and color reproduction remain as close to the original as possible. My thoughts on this would be to import each file into a separate layer, and then set the positioning of the imported image by pixel coordinates.
I came across this, which appears to be the only mention of this sort of thing on SO (that I could find). However, I'd rather not revert to writing this all out in CFExecute. It seems needlessly complicated to add another language every future developer will need familiarity with, and CFExecute doesn't provide much in the way of monitoring or debugging if problems occur. But I'll do this if I need to.
Server is currently running ColdFusion 9 on Windows 2000 Advanced Server. We will probably be upgraded to ColdFusion 10 on Windows 2008 (or newer) by the time this goes to production, but having the ability to test it in my current environment would be a real plus.

Building an excel like data grid in a windows application in C++

I need to create a window application that has an excel grid that users can enter data into, via keyboard or cut and paste. I would like to be able to expand and contract it in both axes on the fly. I'm just starting out programming windows applications, so any pointers to examples or keywords that I can refine my search with, would be extremely helpful.
Thanks,
James
Take a look at The Ultimate Grid. It has lots of features.
EDIT:
It used to be a commercial product, but it was later open sourced
If you are using MFC, take a look at here for data grid control. I've used it several times and it did the job.

C++ online Role Playing Game (RPG)

So I've been learning C++ and SDL to make some basic 2d games. I want to create a game sort of like World of Warcraft but a 2D version. I want it to be on-line and use a database or something to start data like amount of Gold, HP, etc. I was wondering though, if I do this in SDL, would it still work on-line or would the user have to download SDL themselves to play?
I just want a game like this but be able to play it with some friends, just for learning purposes you know. I was also looking at DirectX because everyone has that on windows pretty much. Anyways much help is appreciated, thanks!
No offense, but an RPG is definately the last thing a new programmer should attempt to create. They are the most time, resource, and skill intensive style of game one could possibly try to create. I speak from experience here and can say that RPGs are huge time sinks, even for experienced game studios. At best, you might get a basic map working before you run out of time and patience.
If you want a game you can play with your friends, why not multiplayer tic-tac-toe or even artillery or something similiar. You'll have more success and may actually have something to show your friends when you are done.
You'll probably need to include SDL's runtime library for the game to run on other computers. This will apply no matter what library you use.
For the game itself some libraries are installed in Windows, but in order to achieve other functionality (online gameplay, gampad, etc)you must tell the user to install the other libraries.
If you use SDL, you would be using it for a local graphical client that the user would either download or install. For that, you don't need to have the user download the SDL library separateoly – you can simply put the SDL runtime DLL in the same directory as your executable and package both into the client installer. Of course, you must abide by the GNU LGPL requirements if you do this; the SDL website has details.
As far as the online piece, I'm not sure what you have in mind. I'm guessing either you'll have clients talking directly to each other in some sort of peer-to-peer fashion, or you'll have an back-end server run by you that handles the common game mechanics. I don't think you'll find SDL of much help in either case. But if you go with the back-end server, you can use whatever libraries you like for that server without impact on the user, since the user will only ever deal with the client.
For flat 2D, probably the easiest approach is to use a web interface not SDL. Web browsers are common on Macs and Linux, too, and you might even be able to support smartphones.
Still, you would have to learn how to split work between the clients and the central server. This is not always trivial. Obviously, stuff like # of gold coins would be on the server. Keyboard input is accepted first on the client. But the direction in which your toon is looking? Should the server know that?

C++ OpenGL application as a web service

We have created an OpenGL application in C++ which visualizes some physical simulations. The basic application is contained within a DLL which is used by a simple GUI. It currently runs on a desktop PC, but we have the idea to turn it into a web service.
Since the simulations require dedicated hardware, the idea is that a user, through his/her browser can interact with our application as a service and this service then renders the result to an image (jpg or anything appropriate) that can then be displayed/updated in the browser.
My question:
How can I "easily" turn a c++ application as described into a web-service that runs on some server so that I can approach it over the web? What kind of technologies/APIs should I look at? And are there any real-life examples that tackle a similar problem?
This is possible, but one major difficulty you'll have is trying to use OpenGL from a web service. You'll need to port this to do 100% offscreen rendering and work without a windowing context. That would be my first step, and it's not always a trivial one.
Also, it is very difficult to maintain and manage your opengl contexts from a webservice correctly, and the overhead involved can be quite painful. Depending on the number and types of renderings, you may run into some issues there.
If you need it to scale up well CGI would probably be kind of slow & hacky.
There are some C++ web frameworks out there, see this question.
As far as the OpenGL goes, you'll probably need to use the frame buffer extension as Jay said.
You could then render your image to a texture, and use use glGetTexImage() to grab the pixel data. From there just save into what ever image format you want with the accompanying library.
I had a similar project/question, that although it wasn't a web service, it required OpenGL rendering in a windows service. I had tons of problems getting it to work on Vista, although eventually it did work on XP with regular OpenGL.
I finally tried using Mesa, which I built to work as a private DLL for my service. It was a great decision because I could now actually step into the OpenGL calls and see where things were going wrong. It ran fine in software mode under the service, and while it wasn't hardware accelerated, it worked very well.
If your user-interaction needs are simple, I'd just look at CGI. It should be pretty easy to understand.
As far as getting the output of the OpenGL program, I'd take a look at the framebuffer extension. That should make it easy for you to render into memory, which could then be fed into a JPEG compressor.
I guess you already have access to some webserver, e.g. Apache or similar. In that case you could try out CppServ.
You just need to configure your webserver so it can communicate with CppServ. I'd then propose that you develop a servlet (check the documentation on the site) which in turn communicates with your already existing dll. Since the dll knows everything about OpenGL it should be no problem to create jpeg images etc.
How about using something like Flex to create a web-enabled 'control interface', with a server backend that streams the opengl rendering as video? Basically, you are redirecting keyboard/mouse input via the Flex app, and using it to display 'realtime' 3D activity using a standard movie component.
The devil's in the details, of course....
You can try to use O3D API from google and don't do anysort of service, it would be much more simple.
This answer might sound very basic and elementary, have you tried this approach
Send the vector data from the server to the client or vice versa (just co-ordinates and so on)
Render it on the client side.
This means that the server is only doing the calculations and the numbers are passed to and fro.
I agree that is not a trivial method of trying to vectorize every object/model and texture, but is very fast since instead of heavy graphical images going across, only vector data is being sent across.