Firstly, a short introduction. This is my first post and it seems proper to me.
Intro wrote: |
---|
I've had a fascination with scripts and programming all my life. I've dabbled in C++ and Java previously, and though I'm a good study I never really seemed to get anywhere with it. I've decided it's time for me to get serious and pick it up again. Between my dad and I, we can barely afford to pay rent, and application development seems as good a career as any for me. This time, I will focus more on finding practical uses for the language. I've made up my mind to code in C++ in lieu of java despite its difficulties so the abstraction doesn't become a crutch, and to force myself to get better acquainted with the hardware I'm utilizing. I'm not yet ready to go to school so I will be self-learning, I have copies of C++ Primer and Thinking in C++ |
So! As an exercise I am considering a specific application to create, though I'm sure I will have more ideas in the future. But I don't want to completely reinvent the wheel, I need some library recommendations that I can use and dissect to my heart's content. Any other resources that might help me are appreciated - assume that I know nothing and you won't be far from the reality of it!
The first application I would like to develop is a notepad-like application specifically designed for creating Conlangs, or constructed languages. Not to be confused with a programming language, a conlang is a written and/or spoken language created for artistic purposes. Think Tolkien's Elvish. This project will familiarize me with input/output systems and file operations, and I'll be filling a niche that remains largely unoccupied.
Here is a rough design document that outlines some of the features I would like to include. Note that I will write it for Windows 7, cross-platform support is completely beyond the scope of my capabilities for now and I have no interest in persuing it.
================================================================
1. A GUI. I have never, ever worked with one of these, unless HTML pages count. It's very important that I start in this area.
2. Support for user-created glyphs is essential. I've never worked with fonts so I'm unsure how to go about this, but I'm leaning towards a raster-based system if only for its simplicity.
3. Custom keyboard mapping. Obviously there will not be a 1:1 correspondence between the keys you press and the character that results because our keyboards are (probably) latin, and user defined alphabets may contain more than 26 letters. By default, I imagine the user typing in a latin phonetic representation ("phonetic mode") that includes your umlauts, macrons and whatnot, then clicking a button to convert the result into whatever script they have designed for a visual preview ("glyph mode"). The user decides how their glyphs correspond to the phonetic representation by specifying the behavior in a table.
4. Pop-up glyph editor similar in design to MS paint. The idea is that you can select a particular glyph with your mouse and a window will "pop up" allowing you to edit that exact glyph within the file in question. When you're done, you click a button and your open text file refreshes to reflect the changes.
5. Support for input modes beside left-to-right writing, e.g. RtL and UtD.
6. Pattern-matching support, such as when switching to/from glyph mode to convert words into logograms, or even phrases into ideograms. I can't remember if this is in the std library or not. I'm unsure how to create patterns for non-standard characters, i.e. those including diacritics! I don't really understand how characters are encoded, and how to encode my own fonts. Perhaps I will include a context-menu operation that allows the user to create these patterns quickly by highlighting the string they want to create a pattern for.
6.1 Support for conversion between standard base-10 arabic numerals and custom number systems.
6.2 Possible support for abjads and syllabaries, although this is beyond my own requirements.
7. Custom background image selection for the input field - perhaps the user wants to use parchment or papyrus to set the mood?
8. Functionality allowing the user to export text-selections to a transparent .png file while in "glyph mode." Might be useful for web or game design.
================================================================
That is all I can think of at the moment. I hope my wall of text hasn't scared you off by now, I'm really in need of some guidance!