Technologic - OpenSystems Media
Technologic - OpenSystems Media
Technologic - OpenSystems Media
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
There is a critical subtlety here to be<br />
aware of. Typically the layout utility is<br />
a desktop tool that ultimately generates<br />
code for an embedded platform.<br />
It is important for the interface to look<br />
and behave precisely the same on both<br />
the host development platform and the<br />
platform being developed. The window<br />
builder should enable a What-You-See-<br />
Is-What-You-Get (WYSIWYG) design.<br />
The same runtime library rendering the<br />
image on the desktop should render the<br />
image on the destination device. The<br />
OS shouldn’t, for example, render a font<br />
one way on the desktop OS and appear<br />
differently on the end product. Pixel-forpixel<br />
spacing on a small output device<br />
can matter a great deal.<br />
Creating the code<br />
Once settled on a design, some libraries<br />
make developers write code from<br />
scratch. That’s not the ideal solution. A<br />
good GUI package will generate all the<br />
code and configuration files required<br />
to create the interface. The generated<br />
code should be compiler-neutral, typically<br />
standard ANSI C or C++.<br />
A good bit of the UI’s basic behavior<br />
code can be generated as well. For<br />
example, a collection of radio buttons<br />
has the standard behavior of all turning<br />
off except the one selected. That update<br />
behavior can be coded automatically.<br />
This is not rocket science; programmers<br />
spending time writing basic functionality<br />
wastes their true value.<br />
The functionality behind that interface<br />
is up to the developer. Here the library<br />
can be a great help. This code should<br />
be well documented, showing developers<br />
where to add (and not add) code<br />
to the program. The automatically<br />
generated code should have function<br />
stubs with statements equivalent<br />
to // put your code here. The<br />
designers of the library know what kind<br />
of code belongs where and should provide<br />
a great deal of guidance. Look for<br />
that kind of help in good GUI tools.<br />
carefully for font support in a tool. How<br />
does text get into the UI, and how easy is<br />
it to update and modify that text? What<br />
happens when a client says, “We’re<br />
going after the market in India; we<br />
need to have the software localized into<br />
Hindi”? Developers need to be able to<br />
change the language independently of<br />
the code for smooth system transitions.<br />
Running on hardware<br />
Once the interface is fully designed and<br />
coded, it has to work. It should be compatible<br />
with multiple processors, multiple<br />
<br />
<br />
<br />
<br />
display screens with different display<br />
technologies, physical dimensions, and<br />
color depths. It needs to be independent<br />
of hardware assumptions and dependencies<br />
so migration to new platforms and<br />
the addition/removal of components will<br />
not require substantial recoding or redesign.<br />
Input mechanisms should also be<br />
independent – mouse, stylus, capacitive<br />
touch, resistive touch, and so forth. The<br />
library should be software independent<br />
as well, and should work with a choice<br />
of operating systems, drivers, and other<br />
software packages.<br />
Finally, in addition to the actual programming<br />
code, consider UI text. Fonts<br />
in foreign languages and non-Roman<br />
scripts like Mandarin, Kanji, or Arabic<br />
are an important consideration. Look<br />
<br />
<br />
PC/104 and Small Form Factors 2012 Resource Guide 13